トップ «前の日記(2012-03-07) 最新 次の日記(2012-03-24)» 編集

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 を指定することができました。めでたしめでたし。

本日のツッコミ(全2件) [ツッコミを入れる]
_ hikaruworld (2012-04-01 01:38)

ちょっと気になったんですが、これってRuby経由で使う場合ですよね? <br>jasmineをstandaloneで使う場合は地道にコメントアウトするしかないと思ってるのですが。 <br> <br>自分はjasmine-maven-plugin使ってるので、sourceExcludes/specExcludeを使ったりしますけども。

_ wtnabe (2012-04-01 19:33)

あ、なるほどそうですね。Jasmine gemと書くべきですね。