2011-09-15 13 views
2

基本的にいくつかのヘルパー(FormHelpers、FormTagHelpers)と振る舞いを追加するJavascriptがいくつかあるRailsプラグイン/ gemを書いています。ジャスミンテスト用のフィクスチャを生成する方法

RSpecでタグヘルパーをテストしています。そして今、私はJavascriptの動作をテストするためにJasmineをセットアップしています。

静的な(脆い)器具を使用する代わりに私のプラグインのタグヘルパーコードからJasmineのフィクスチャを生成したいと思います。タグコードが変更されると、ジャスミンテストのフィクスチャが自動的に更新されます。

私の最初の考えは、 "it_should_behave_like"の共有動作のようなものでRSpecを拡張することでしたが、それは "it_should_save_fixture_on_success"だけでした。それは後(:すべて)ブロックのようなものになります。

私は知る必要がある2つのこと...コンテキストの「タイトル」(どのようにしてフィクスチャのデフォルト名になるか)と、after(:all)私はジャスミンのために似た何かをしたすべてのスペックが正常に実行された場合。合理的な音?それとも私が何かを明らかに見逃している

ん?

答えて

2

誰かがこの不具合を見つけた場合、より新しい、より良い答えがここにあります。

https://github.com/crismali/magic_lamp

魔法のランプは備品があなたのJavascriptのテストで使用するようご意見/パーシャルをレンダリングすることができます。とにかく私が探していたものはかなりです。

2

。私は、HTMLの中にいくつかのHAMLテンプレートをコンパイルし、それらを置くrakeタスクを書きましたジャックミンの備品のパス。次に、私はRakeタスクをjasmine:ciタスクの前に実行するように依存関係にするように設定しました。これは私が書いたRakeタスクです:

namespace :dom do                                   
    namespace :fixtures do 
    target_path = "spec/javascripts/fixtures" 
    template_path = "spec/javascripts/templates" 

    task :compile do 
     view_paths = ActionController::Base.view_paths 
     view_paths << template_path 

     view = ActionView::Base.new(view_paths, {}) 

     Dir.glob File.join(template_path, '*') do |path| 
     template = File.basename(path) 
     template = template.slice(0...template.index('.')) if template.index('.') 
     target = File.join(target_path, template) + ".html" 

     puts "Rendering fixture '#{template}' to #{target}" 

     File.open(target, 'w') do |f| 
      f.write view.render(:file => template, :layout => false) 
     end 
     end 
    end 

    task :clean do 
     Dir.glob File.join(target_path, '*') do |path| 
     File.delete path 
     end 
    end 
    end 
end 

namespace :spec do 
    desc "Run specs in spec/javascripts" 
    task :javascripts => ['dom:fixtures:compile', 'jasmine:ci'] 
end 

これにより、spec/javascript/templatesにHAMLまたはERBテンプレートを書き込むことができ、spec/javascript/fixturesにコンパイルされ、Jasmineによって読み込まれます。行view_paths = ActionController::Base.view_pathsは、アプリケーションの部分データをテンプレートで利用できるようにします(spec/javascript/templates)。この例を微調整してヘルパーを利用できるようにする必要があるでしょう。最後に、これはRails 2.3アプリケーションからのものです。私はまだRails 3.xでそれを試していません。私はこれが役立つことを願っています

+0

興味深い。これは確かに有効な方法の1つです(そして、現時点では、プラグインはRails 2で動作しなければならないので、問題はありません)。しかし、タグスペックが失敗した場合、生成されたフィクスチャはとにかく「不良」になるので、私はまだフィクスチャ世代がタグスペックの* success *をトリガーするのが好きです。 – wndxlori

関連する問題