【问题标题】:Stubbing jQuery.fn method works fine in Chrome and Firefox, IE8 fails存根 jQuery.fn 方法在 Chrome 和 Firefox 中运行良好,IE8 失败
【发布时间】:2023-03-13 15:40:02
【问题描述】:

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

【问题讨论】:

  • 什么是$("#some-selector"),什么元素?
  • @Huangism 这是一个输入,将在 someProprietaryMethod() 中使用。存根 .Foo() 使这无关紧要。
  • euaul 是错字吗?不知道我明白...
  • @mjwenk 是的,只是一个错字。我更新了代码。

标签: jquery qunit sinon


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多