Jasmineを使用してJavaScriptアセットをJammit経由でテストするにはどうすればよいですか?
-
27-10-2019 - |
質問
JavaScriptアセットを使用して組み合わせているRailsアプリがあります ジャムミット, 、そして私は使いたいです ジャスミン JavaScriptのBDDスタイルのテスト用。ジャスミン内からジャムミット生成の「パカック」にアクセスすることについて何かアドバイスがあるかどうか疑問に思っていますか?
問題は、ジャスミンがディスク上のJSファイルのリストをテストするために定義することによって構成されていることです。その後、ブラウザでロードされて実行される独自のテストランナーページ内にそれらのファイルが含まれています。
Jasmine.yml configファイル内の個々のJSファイルをJammitでパッケージ化する前に参照することができます...しかし、Jammitはすでに私のファイル間の依存関係を扱っています。さらに重要なことには、アクセスも必要です。コンパイルされた JavaScriptテンプレート そのジャムミットは生産します。
また、手動でJammitを実行してコンパイルされた資産を生成してからJasmineを実行することもできますが、変更をテストするために各テストが実行される前に手で資産を再生成する必要があります。駆動型ワークフロー。
どういうわけかできるか疑問に思っています:
- ジャスミンのラックサーバー内からジャムミットコントローラーをマウントして、ジャスミンのパッケージを提供できるようにしますか?これは基本的に、JammitがすでにRailsの開発env内から行っているのと同じように機能します。
- テストが実行される前に、すべてのページのロードに資産をパッケージ化するために、何らかの形でジャスミンに接続しますか?これは遅くなりますが、私に一歩を節約し、物事が最新であることを確認します。
助言がありますか?私はちょうどこれを始めたばかりなので、私はそれをすべて間違っていることになるかもしれません。どんなアドバイスでも大歓迎です。 :-)
ありがとう! - ジョン
解決
これがあなたが探している魔法のコンボです:
- 使用 ガードジェム 一緒に ガード - ヤミットジェム プロジェクトの資産の変更に注意してください
- インストールします livereloadプラグイン 選択したブラウザでインストールします ガードリバーロードジェム したがって、仕様やアセットが変更されるたびに、ブラウザを自動リロードできます。
- ガードを起動してから、ジャスミンをレイクし、ジャスミンの仕様をブラウザにロードし、ライブRELOADボタンを押して、開始したライブRELOADサーバーに接続します
- ファイルを変更します。ガードがジャムミットを実行し、ブラウザにジャスミンの仕様を更新するように指示すると、魔法が起こるのを見てください。
これがあなたを始めるためのガードファイルの例です:
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
他のヒント
私はOKソリューションを考え出しました:ジャスミンが始まったときにフォースジャムミットをリロードしてパッケージ化します。これを行うには、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/