Fares さん、ご回答ありがとうございます。jasmine の設定ファイルで何が起きているかについての洞察が得られました。
jasmine
ページの<head>
タグにファイルを含める方法には、予測可能な順序があります。
まず、私のセットアップの詳細:
rails 4.0.1
jasmine 1.3.2
jquery-rails 3.0.4 (which provides jquery-1.10.2)
ここに私の
spec/javascripts/support/jasmine.yml
. 特定のアプリをテストするためのファイルは必要ありませ
helpers
ん
css
。すべてのコメントを削除しました。
src_files:
- spec/javascripts/lib/jquery-1.10.2.js
- app/assets/javascripts/tools/dependency-parser.js
spec_dir: spec/javascripts
spec_files:
- '**/*[sS]pec.js'
私の
<head>
ジャスミンページには、次のものが順番に含まれています。
jasmine core <link rel="shortcut icon" type="image/png" href="/__JASMINE_ROOT__/images/jasmine_favicon.png">
<link rel="stylesheet" href="/__jasmine__/jasmine.css" type="text/css" media="screen">
<script src="/__jasmine__/jasmine.js" type="text/javascript"></script>
<script src="/__jasmine__/jasmine-html.js" type="text/javascript"></script>
<script src="/__jasmine__/json2.js" type="text/javascript"></script>
src_files <script src="/spec/javascripts/lib/jquery-1.10.2.js" type="text/javascript"></script>
<script src="/app/assets/javascripts/tools/dependency-parser.js" type="text/javascript"></script>
helper_files <!-- I didn't have anything here -->
spec_files <script src="/__spec__/dependency-parser_spec.js" type="text/javascript"></script>
jasmine boot <script src="/__boot__/boot.js" type="text/javascript"></script>
私のアプリでは、アセット パイプラインと
jquery-rails
gem を使用し、典型的なインクルードは次の
app/assets/application.js
とおりです。
//=require jquery
//=require jquery-ujs
//=require tree .
私はjquery-rails
宝石を使用しているため、jQuery JavaScript ファイルを直接ロードする場所が実際にはどこにもないことを意味します。どこからでも来る場合は、アセット パイプラインから来る必要があります。またapp/assets/javascripts/application.js
、何らかの理由でファイルを含めることができなかったようです。これは問題ないことが判明しました。jQuery に依存するカスタム JavaScript をテストしたいだけです。
そのため、アプリで使用しているバージョンの jQuery をダウンロードして、次の(1.10.2)
ように配置しました。
spec/javascripts/lib/ <= I created this folder
その後、.js
必要な順序でファイルを予想通りにロードできたため、すべてが完全に機能しました。完璧ではありません。私は現在、手動で jQuery のバージョンを、jquery-rails
使用しているバージョンと同じ仕様に維持していますが、それは今のところかなりマイナーなことです... 「なぜ人々は javascript ファイルを gem にパッケージ化するのですか? " この種の風変わりなことを行う Web フレームワークは他にありません。
このようなアセット パイプラインの問題を処理するはずだったので、gem (この記事の執筆時点での最新バージョン) も使用してみましjasmine 2.0.0.rc5
たが、うまくいきませんでした。
jasmine-jquery
また、またはjasminerice
gemを使用するなど、より複雑なものにジャンプしようとしましたが、どちらの実装も上で行ったことのより複雑なバージョンであることがわかりました。特定のケースで構成ファイルがタグの内容を生成する方法を理解すると<head>
、比較的簡単に修正できました。
必要に応じてリリース時に移行する可能性がjasmine 2.0.0
あります (Rails 4 のサポートが向上していると思われます) が、このソリューションがうまく機能すると確信しています。