2012-03-08

Jasmine gemで特定のjsファイルを除外する

みなさん、テストしてますか。得意げに Jasmine を紹介して1年以上が経ち、最近はようやくある程度 JavaScript についても TDD が回せるようになってきたかなと感じております。(いつものことながら歩みが遅い。)

さて今回のテーマは

Jasmine gemで特定のファイルを除外したい

です。

jasmine.ymlにはexclude_filesという設定がない

普通に exclude があるだろうと思ってタカをくくっていたのですが、ありませんでした。

  • src_dir
  • spec_dir
  • helpers
  • src_files
  • spec_files
  • stylesheets

しかありません。あるぇ。

src_files で頭に ! を付けると除外される

jasmine-1.1.2/lib/jasmine/config.rb を読んでいると

   def match_files(dir, patterns)
     dir = File.expand_path(dir)
     negative, positive = patterns.partition {|pattern| /^!/ =~ pattern}
     chosen, negated = [positive, negative].collect do |patterns|
       patterns.collect do |pattern|
         matches = Dir.glob(File.join(dir, pattern.gsub(/^!/,'')))
         matches.collect {|f| f.sub("#{dir}/", "")}.sort
       end.flatten.uniq
     end
     chosen - negated
   end

こんなメソッドを見つけました。ということは jasmine.yml 上ではこうですね。

ex) Railsプロジェクトの場合

src_files:
  - public/javascripts/jquery.min.js
  - public/javascripts/jquery_ujs.js
  - public/javascripts/application.js
  - '!public/javascripts/exclude.js'
  - public/javascripts/**/*.js

最初 '' で囲まずにいきなり ! を付けてしまったんですが、そうすると YAML の読み込みの段階でコケます。そらそうだ。

これでテストのときに読み込んでほしくない JavaScript を指定することができました。めでたしめでたし。

About

例によって個人のなんちゃらです