7

Jammitを使用して JavaScript アセットを組み合わせている Rails アプリがあり、JavaScriptの BDD スタイルのテストにJasmineを使用したいと考えています。Jasmine 内から Jammit によって生成された「パッケージ」にアクセスすることについて誰かアドバイスがあれば教えてください。

問題は、Jasmine が、テストするディスク上の JS ファイルのリストを定義することによって構成され、それらのファイルを独自のテスト ランナー ページに含めて、ブラウザーに読み込まれて実行されることです。

Jammit でパッケージ化する前に、jasmine.yml 構成ファイル内の個々の JS ファイルをそれぞれ参照できます。Jammit が生成するコンパイル済みのJavaScript テンプレート。

Jammit を手動で実行して、最初にコンパイル済みのアセットを生成してから Jasmine を実行することもできますが、変更をテストするために各テストを実行する前に手動でアセットを再生成する必要があり、高速なテストが非常に困難になります。駆動型ワークフロー。

私は何とかできるかどうか疑問に思っています:

  • Jasmine のラック サーバー内から Jammit コントローラーをマウントして、Jasmine からパッケージを提供できるようにしますか? これは基本的に、Rails の開発環境内から Jammit がすでに行っているのと同じように機能します。
  • テストが実行される前に、ページが読み込まれるたびにアセットをパッケージ化するために Jasmine に何らかの方法でフックしますか? これは遅くなりますが、ステップを節約し、最新の状態に保つことができます。

助言がありますか?まだ始めたばかりなので、間違っている可能性もあります。アドバイスをいただければ幸いです。:-)

ありがとう!-ジョン

4

2 に答える 2

10

探している魔法のコンボは次のとおりです。

  1. プロジェクトのアセットへの変更を監視するには、 guard gemをguard-jammit gemと一緒に使用します。
  2. 選択したブラウザーにLiveReload プラグインをインストールし、 guard-livereload gemをインストールして、仕様やアセットが変更されるたびにブラウザーを自動リロードできるようにします。
  3. ガードを起動し、ジャスミンをかき集め、ブラウザにジャスミンのスペックをロードし、ライブリロードボタンを押して、ガードが開始したライブリロードサーバーに接続します
  4. ファイルを変更します。ガードが jammit を実行し、ブラウザーにジャスミンの仕様を更新するように指示するときに、魔法が起こるのを見てください。

開始するための Guardfile の例を次に示します。

guard 'jammit' do
  watch(%r{public/javascripts/(.*)\.js})
  watch(%r{app/views/jst/(.*)\.jst})
  watch(%r{public/stylesheets/(.*)\.css})
end

guard 'livereload', :apply_js_live => false do
  watch(%r{app/.+\.(erb|haml)})
  watch(%r{app/helpers/.+\.rb})
  watch(%r{public/.+\.(css|js|html)})
  watch(%r{config/locales/.+\.yml})
  watch(%r{spec/javascripts/.+\.js})
end
于 2011-05-20T00:15:47.363 に答える
3

ジャスミンの起動時にJammitを強制的にリロードしてパッケージ化するという、問題のない解決策を思いつきました。これを行うには、jasmine_config.rb ファイルを編集する必要があります。

require 'jammit'
module Jasmine
  class Config

    Jammit.reload!
    Jammit.package!

   end
end

ここでもう少し詳細な投稿を書きました: http://www.rebeccamiller-webster.com/2011/05/jammit-jasmine-bdd/

于 2011-05-19T23:43:40.410 に答える