1

ブラウザで完全に機能しているのに、jasmineにカスタムjavascriptファイルをロードさせることができません。エラーの可能性を回避するためにJavaScriptを最小限に抑えましたが、それでも最も単純なものでテストが失敗します。

カスタムARB.jsファイル:

$(document).ready(function() {
  alert('typeof ARB: ' + typeof ARB);
    });
ARB = {};
ARB.VERSION = "V1.01.00 2012-08-24";

jasmine構成ファイルスニペット(私はRails 3.0.9を使用しています):

src_files:
  - "public/javascripts/**/*.js"
  - "public/javascripts/ARB.js"

このテスト:

  it('should define the custom javascript functions', function() {
    expect(typeof ARB).toEqual('object');
    });

失敗する:

Expected 'undefined' to equal 'object'.

jQueryが読み込まれ、application.jsファイルも読み込まれます。ジャスミンを実行しているとき、アラートメッセージは表示されませんが、アプリを実行しているときは表示されます。

私は何が欠けていますか?

更新:$(document).ready関数を削除すると、jasmineはすべてのテストに合格します-それはどういうことですか?

4

1 に答える 1

2

shioyamaは、これを理解するために必要なポインターをくれました。カスタムARB.jsファイルがjqueryファイルの前にロードされていたため、$(document).ready関数にアクセスできませんでした。私がしなければならなかったのは、JavaScriptファイルがロードされる順序を明示的に説明することでした。/spec/javascripts/support/jasmine.ymlにあるjasmine設定ファイルに入れたものは次のとおりです。

src_files:
  - "public/javascripts/**/jquery.js"
  - "public/javascripts/**/jq*.js"
  - "public/javascripts/**/application.js"
  - "app/assets/javascripts/**/*.js"
  - "public/javascripts/ARB.js"

最初にメインのjquery.jsファイルを強制的にロードし、次に他のすべてのjqueryファイル、次にapplication.js、次にアセットディレクトリにある他のjavascriptファイル、最後にカスタムjavascriptファイルをロードします。

私はまだRails3.0.9を使用していて、3.1以降への移行とアセットパイプラインを開始しているので、これは私にとってはうまくいきます。

于 2012-09-03T03:57:53.673 に答える