QUnit在严格模式下返回错误

时间:2017-02-25 17:44:20

标签: unit-testing qunit

我正在尝试为它创建一个(纯)构造函数和一个QUnit测试:

//app.js
function myFunc(param1, param2) {
  this.param1 = param1;
  this.param2 = param2;
  return this;

}

//test.js
QUnit.test("should return a string and a number", function(assert) {

  assert.ok(myFunc("some-string", 4545435234), "a string and a number were returned");

});

代码运行并通过我的测试,直到我将"use strict"添加到app.js。然后QUnit显示以下失败消息:

1. Died on test #1 at http://some/url/:1:1: Cannot set property 'param1' of undefined
Source: TypeError: Cannot set property 'param1' of undefined

如果我将myFunc参数作为数组返回,我可以同时使用代码和测试:

function myFunc(param1, param2)) {
    return [param1, param2];
}

但这似乎并不合适。我知道这与var吊装有关,但我不清楚它。

提前致谢。     ...

1 个答案:

答案 0 :(得分:1)

在严格模式下,JavaScript函数不会被赋予默认上下文(this),因此您必须提供上下文。一旦执行此操作,请通过new关键字。如果您将断言更改为以下内容,我认为这将有效:

assert.ok(new myFunc("some-string", 4545435234), "a string and a number were returned");