Ich habe den folgenden Code in einem Dienst.Jasmine So testen Sie eine Funktion, die eine anonyme Funktion zurückgibt
function getK(k) {
return function() {
return k;
};
}
Ich kann das testen getK mit
beforeEach(inject(function(FiltersService){
this.service = FiltersService;
spyOn(this.service, 'getK');
}));
it("getK should be called", function(){
var key = "TEST";
var result = this.service.getK(key);
expect(this.service.getK).toHaveBeenCalled();
expect(this.service.getK).toHaveBeenCalledWith("TEST");
}
Meine Frage gestellt wurde, ist, wie ich testen Sie inneren der
return function() {
return k;
}
Mit Jasmin
EDIT
Um es weiter zu spezifizieren, wird getK function
verwendet, um ein Objekt wie unten gezeigt einzufügen. Dieses Objekt ist Teil einer Bibliothek, die ich verwende, die key
verwendet. Ich denke, ich bin etwas verwirrt darüber, wie man das aus einer Karma-Jasmin-Perspektive heraus überprüfen kann, da die tatsächliche Implementierung von key
Teil einer Bibliothek ist, die ich nicht kontrolliere. So bin ich nicht sicher, wie Tests für die interne getK Funktion zu schreiben, oder auch für die unten valid
Funktion sicher sein das Objekt ausgefüllt richtig
libObject.push({
Data: {
Name: 'test'
},
key: getK("TEST"),
valid: function() {
return true;
}
});
Was genau möchten Sie testen? – estus
All das kann ich wirklich testen. Dass es zurückgibt, was ich an getK gesendet habe ... ehrlich gesagt, es ist die Codeabdeckung – user2719805
'expect (result) .toEqual (jasmine.any (Function))' zu bekommen. Sie haben die Details zum Kontext dieser Funktion nicht angegeben, daher ist es nicht möglich, etwas anderes zu sagen. Und ich sehe nicht, warum 'Test, dass getK mit' genannt wurde, benötigt wird. Sie haben '' getK (key) ''genannt. Natürlich wird es natürlich mit "TEST" heißen. – estus