我如何測試某個JQuery選擇器是否已經與Jasmine一起執行?我試圖做到以下幾點:如何用Jasmine模擬JQuery?
spyOn($.fn, 'init').andCallThrough();
// my code
expect($.init).toHaveBeenCalled();
但這個電話後,$('div')
回報Object { selector="div", context=document, NaN=div.spec, more...}
,雖然它返回(和$.fn.init('div')
不會返回它):[div.jasmine_reporter, div.banner, div.logo, 4 more...]
。由於JQuery對象不再可用,這些東西自然會破壞代碼。
例子:
說我想測試一個jQuery選擇被調用,我寫:
it('tests', function() {
spyOn($.fn, 'init').andCallThrough();
$('html');
expect($.init).toHaveBeenCalled();
});
這個結果從茉莉花錯誤:Error: Expected a spy, but got undefined.
。然後,我在Firebug上$(「HTML」)行設置斷點,當我到達那裏,試圖看,什麼$('html')
值,我得到:
Object { selector="html", context=document, NaN=html, more...}
如果我註釋掉spyOn
,對線$('html')
計算結果爲:
[html]
這是我期待與spyOn
看爲好。
你可以提供你的代碼爲spyOn和期待?另外,你的最後一段有點難以理解。你可以試着擴大/澄清它嗎? – machineghost
@machineghost,增加了一個例子,希望它有幫助 – Fluffy
嗯,你試過期待($ .fn.init).toHaveBeenCalled(); ? – machineghost