我正在使用 sinon stub 和 QUnit 编写一系列测试。测试的方法依赖于我们称为 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
我发现与手动创建 stub 相比,使用 sinon stub 非常简单且直观。问题是这在 Chrome 和 Firefox 中工作正常,但在 IE8 中不行。
对于 IE8,我得到的测试结果是:
Died on test #1 undefined: Object doesn't support this property or method
在测试的代码中放置一些调试面包屑,看起来 $().Foo 和 $.fn.Foo 都被视为方法,但测试在 $("#some-selector").Foo( ) 在 IE8 中运行时被调用。
最佳答案
我最终编写了自己的 stub 库,因为现有的 stub 库似乎无法 stub jQuery 原型(prototype)。
如果您想测试该上下文(我就是这样做的),那么当您 stub 一个方法时,问题之一似乎会丢失“this”的上下文。
关于jquery - stub jQuery.fn 方法在 Chrome 和 Firefox 中工作正常,IE8 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313897/