2011-01-13 32 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()的作品,但效果不。它說effect()方法不存在,就好像我沒有加載jquery-ui庫。

我已經將jquery-ui添加到我的jasmine.yml文件中,並且已經驗證它是由跑步者加載的。

有什麼建議嗎?

+0

有沒有想過這個? – 2011-12-13 02:41:38

回答

1

我有一個類似的問題。我得到的東西從我的應用程序的jasmine.yml文件中刪除這一行工作:

- public/javascripts/**/*.js 

我已經明確地改變了一些事情,包括每一個JS文件明確。我想一個人應該小心通配符條目。

希望它能幫助,

- 何塞

0

萬一有人需要這個答案在未來:

不能對效果的方法窺視是這樣的:

spyOn(search_box, 'effect'); 

你應該採取這樣的效果方法:

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

我認爲你需要將before_ach函數之外的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和jasmine spys也存在問題,我現在沒有時間詳細闡述。