我正在尝试为它创建一个(纯)构造函数和一个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吊装有关,但我不清楚它。
提前致谢。 ...
答案 0 :(得分:1)
在严格模式下,JavaScript函数不会被赋予默认上下文(this
),因此您必须提供上下文。一旦执行此操作,请通过new
关键字。如果您将断言更改为以下内容,我认为这将有效:
assert.ok(new myFunc("some-string", 4545435234), "a string and a number were returned");