Ich habe ein vollständiges vereinfachtes Beispiel erstellt, das das Problem repliziert, das ich bekomme.kann jasmine.any (Funktion) nicht arbeiten
function TestObj() {
var self = this;
self.getStuff = function(aString, callback) {
// TODO
}
}
describe("server communications", function() {
it("it calls the server", function() {
var obj = new TestObj();
obj.getStuff = jasmine.createSpy();
// swap the above line for this and it makes no difference
// spyOn(obj, "getStuff");
var functionVar = function() {
};
obj.getStuff("hello", functionVar);
expect(obj.getStuff).toHaveBeenCalledWith(
[ "hello", jasmine.any(Function) ]);
});
});
Statt einer Leiteinheit Test, erhalte ich die folgende Ausgabe:
Erwarteter Spion mit genannt worden zu sein: [[ 'Hallo', < jasmine.any (Funktion Funktion() {[native Code]})>]] aber hieß mit: [[ 'Hallo', Funktion]]
Warum ist es nicht zu erkennen, dass die Funktionen, die ich in (function() übergeben {}) sind eigentlich func tionen? Was ist das native Code-Zeug, das es erwartet? Hat jemand anderes dieses Problem mit Jasmine.any (Function)? Vielen Dank!
EDITED versuchte ich spyOn statt jasmine.createSpy() und es macht keinen Unterschied verwenden. Ich habe nur ein einziges Argument versucht und es funktioniert. Die Einführung des ersten String-Arguments bricht die Jasmine.any (Function) - irgendwelche Ideen?
Siehe meine Änderungen zu meiner ursprünglichen Antwort. Ich habe SpyOn ausprobiert - kein Unterschied. Haben Sie ein Beispiel dafür bekommen, mit mehreren Argumenten zu arbeiten? –
zerschmissen - behoben. Danke für deine Antwort. –