2011-01-13 7 views
0

これはかなり単純です。私のJSは、単に呼び出すだけです:jasmineとjquery-ui-effect()メソッドが存在しません

$("#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()メソッドが存在しないと言います。

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

提案がありますか?

+0

これを今までに把握していますか? –

答えて

1

私にも同様の問題がありました。私は明示的に各JSが明示的にファイルを含めるように物事を変更しました

- public/javascripts/**/*.js 

:私は自分のアプリケーションのjasmine.ymlファイルからこの行を削除することで作業のものを得ました。ワイルドカードの入力には注意が必要です。あなたはこのような効果方法をスパイすることはできません

spyOn(search_box, 'effect'); 

誰かが将来的にこの答えを必要とする場合にはホセ・

0

-

に、それが役に立てば幸いあなたはこのような効果の方法でスパイする必要があります:

spyOn($.fn, 'effect'); 
0

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

変更:

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

へ:

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

あなたは "厳格な使用" を使用していた場合には、デバッガがこれを指摘した可能性があります。これはジャスミンスパイでJQueryを使用する際にも問題があると私は今説明する時間がないと言いました。

関連する問題