3

我正在使用带有 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 中运行时。

4

1 回答 1

0

我最终编写了自己的存根库,因为现有的存根库似乎无法存根 jQuery 的原型。

当你存根一个方法时,其中一个问题似乎是丢失了“this”的上下文,如果你想测试那个上下文——我就是这样做的。

于 2012-11-29T00:28:50.583 回答