2012-11-09 112 views
3

我正在用QUnit編寫一系列使用sinon存根的測試。測試的方法有自定義插件的依賴,我們將調用foo,這我碰傷了這樣:Stubbing jQuery.fn方法在Chrome和Firefox中正常工作,IE8失敗

// setup 
var stub = this.stub(jQuery.fn, "Foo").returns(""); 

// run 
someProprietyMethod(); 

// assertions 
equal(stub.args.length, 3); 
equal(stub.args[0], "bar"); 
equal(stub.thisValues[0], "#some-selector"); 
// other assertions 

我發現使用興農存根非常方便和直觀相比手動創建存根。問題是,這在Chrome和Firefox中運行良好,但不是IE8。

對於IE8的測試結果我得到:

Died on test #1 undefined: Object doesn't support this property or method 

在測試代碼放置一些調試麪包屑,它看起來像$()Foo和$ .fn.Foo都被看作是方法,但是。在$(「#some-selector」)後測試停止運行。在IE8中運行時調用Foo()。

+0

什麼是$(「#some-selector」),什麼元素? – Huangism

+0

@黃色這是一個輸入,將用於某些專有方法()。存根.Foo()使這無關緊要。 – Martin

+0

euaul是否是錯字?不知道我明白... – mjwenk

回答

0

我最終編寫了自己的存根庫,因爲它似乎存在的存根庫不能殘留jQuery的原型。

當你存根方法時,如果你想測試那個上下文 - 我是這麼做的,其中一個問題似乎正在丟失'this'的上下文。

相關問題