jquery - stub jQuery.fn 方法在 Chrome 和 Firefox 中工作正常,IE8 失败

标签 jquery qunit sinon

我正在使用 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/

相关文章:

javascript - 使用 Sinon 创建 document.getSelection stub

unit-testing - Ember Controller 上的单元测试计算属性

javascript - 在 Cypress 中,如何对带有 spy 的对象进行断言?

php - 覆盖 wp-login.php 样式

javascript - Bootstrap 3 : Fixed navbar in mobile layout is expanded by default on load without 'in' class

javascript - 设置从日期 1 到日期 2 的最大日期,最多 365 天

javascript - 在 promise javascript 中从 sinon.spy 获取回调参数

javascript - Netbeans 的 Javascript/Jquery Intellisense 问题

javascript - 包括用于单元测试的外部 .js 文件

javascript - 使用 javascript 的 Mocha 和 Sinon 单元测试问题