Ich bringe Tests zu unseren Javascript-Dateien an meinem Arbeitsplatz. Ich habe mich entschieden, Mocha, Chai und Sinon Bibliotheken zu benutzen, um beim Testen zu helfen. Ich fange an, Komponententests für Funktionen zu schreiben, die nicht zu viel Refactoring benötigen und bin in diesen interessanten Fall geraten, den ich nicht wirklich verstehe.Sinon Stub eine Funktion innerhalb einer Funktion
function getQueries() {
code that returns queries in an array -> ['one', 'two', 'three']
}
function sort(col, type) {
var queries = getQueries();
some code that sorts these queries
return sorted array
}
Weil I-Einheit am Testen der Sortierfunktion Ich wollte getQueries Stub() eine Dummy Liste zurückzukehren.
var queries = ['one', 'two', 'three'];
sinon.stub(getQueries).returns(queries);
Der obige Code nicht funktioniert Fehler msg:
TypeError: Attempted to wrap undefined property undefined as function
at Object.wrapMethod (file://node_modules/sinon/pkg/sinon-1.17.7.js:1359:29)
at Object.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:3459:26)
at F.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:4200:44)
at Context.obj.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:4215:37)
at Context.<anonymous> (unit_tests/unit_test.js:154:10)
at Context.sinonSandboxedTest (file:/node_modules/sinon/pkg/sinon-1.17.7.js:6069:39)
jedoch der folgende Code ordnungsgemäß funktionierte.
var queries = ['one', 'two', 'three'];
getQueries = sinon.stub();
getQueries.returns(queries);
Ich verstehe nicht ganz, warum dieser Code funktioniert, während die über es nicht der Fall ist. Ich kenne die Syntax von sinon.stub (obj, method, function), aber die getQueries ist eine Funktion ohne ein Objekt. Jede Einsicht wird sehr geschätzt.
Super! Ich habe versucht, Dokument als mein globales Objekt zu verwenden, aber ich schätze sein Fenster. Danke für die Antwort. –