2017-02-25 4 views
0

Ich versuche, eine (rein) Konstruktorfunktion und einen QUnit Test für sie zu schaffen:QUnit Fehler im strikten Modus kehrt

//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"); 

}); 

den Code ausgeführt wird und gibt meinen Test, bis ich "use strict"-app.js hinzufügen. Dann zeigt QUnit die folgende Meldung fehlschlagen:

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 

Ich kann sowohl den Code an die Arbeit und den Test zu bestehen, wenn ich die myFunc Parameter als Array zurück:

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

Aber das nur doesn‘ t scheinen richtig. Ich habe gehört, dass das etwas mit Var-Hissen zu tun hat, aber ich bin mir nicht sicher.

Vielen Dank im Voraus. ...

Antwort

1

Im strikten Modus erhalten JavaScript-Funktionen nicht den Standardkontext (this), daher müssen Sie den Kontext angeben. Ein Weg, dies zu tun, ist durch das Schlüsselwort new. Wenn Sie Ihre Behauptung der folgenden ändern Ich denke, das funktioniert:

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

+1

100% festgelegt. Liebe, um Hilfe von einem Washingtonianer zu bekommen ... danke! – kaidez

Verwandte Themen