2017-02-25 95 views
0

返回錯誤我試圖創建一個(純)構造函數和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]; 
} 

但是,這只是沒有按」 t看起來沒錯。我知道這與var提升有關,但我不清楚它。

在此先感謝。 ...

回答

1

在JavaScript函數沒有給出默認的上下文(this)嚴格模式,所以你必須提供上下文。一旦做到這一點,通過new關鍵字。如果你改變你的斷言下面我想這會工作:

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

+1

100%固定。愛從華盛頓同胞那裏得到幫助......謝謝! – kaidez