我正在使用QUnit编写一系列使用sinon存根的测试。测试的方法依赖于我们称之为Foo的自定义插件,我将这样插入:
// 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
与手动创建存根相比,我发现使用sinon存根非常简单直观。问题是这在Chrome和Firefox中运行良好,但不适用于IE8。
对于测试结果中的IE8,我得到:
Died on test #1 undefined: Object doesn't support this property or method
在测试代码中放置一些调试面包屑,它看起来像$()。Foo和$ .fn.Foo都被视为方法,但测试在$(“#some-selector”)之后停止运行.Foo( )在IE8中运行时被调用。
答案 0 :(得分:0)
我最终编写了自己的存根库,因为现有的存根库似乎无法存根jQuery的原型。
当你想要测试那个上下文时,其中一个问题似乎是丢失了'this'的上下文 - 我这样做了。