0

これはとても簡単です。私のJSはちょうど呼び出しています:

$("#search_box").focus().effect("highlight",{},3000);

    describe('initialization', function(){
        beforeEach(function(){
            var search_box = $("#search_box");
        });

        it('should initially focus on the search box', function(){
            spyOn(search_box, 'focus');
            wizard._initialize();
            expect(search_box.focus).toHaveBeenCalled();
        });

        it('should initially highlight the search box', function(){
            spyOn(search_box, 'effect');
            wizard._initialize();
            expect(search_box.effect).toHaveBeenCalledWith("highlight", {}, 3000);
        });

    });

focus() は機能しますが、効果はありません。jquery-ui ライブラリをロードしていないかのように、effect() メソッドが存在しないと表示されます。

jquery-ui を jasmine.yml ファイルに追加し、ランナーによってロードされることを確認しました。

助言がありますか?

4

3 に答える 3

1

同様の問題がありました。アプリケーションの jasmine.yml ファイルから次の行を削除することで、動作するようになりました。

- public/javascripts/**/*.js

各jsファイルを明示的に含めるように明示的に変更しました。ワイルドカードの入力には注意が必要だと思います。

それが役に立てば幸い、

-- ホセ

于 2011-04-19T11:57:57.457 に答える
0

誰かが将来この回答を必要とする場合:

次のような効果メソッドをスパイすることはできません。

spyOn(search_box, 'effect');

次のような効果メソッドをスパイする必要があります。

spyOn($.fn, 'effect');
于 2013-03-19T15:27:02.917 に答える
0

search_box の宣言を beforeEach 関数の外に移動する必要があると思います。

変化する:

describe('initialization', function(){
    beforeEach(function(){
        var search_box = $("#search_box");
    });
});

に:

describe('initialization', function(){
    var search_box;
    beforeEach(function(){
        search_box = $("#search_box");
    });
});

「use strict」を使用した場合。デバッガーがこれを指摘した可能性があります。これは、私が今詳しく説明する時間がないジャスミンスパイでJQueryを使用する問題もあります。

于 2014-12-27T18:38:44.047 に答える