Stworzyłem kompletny uproszczony przykład, który replikuje problem, który otrzymuję.nie można uzyskać jaśminu. (Funkcja) do pracy
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) ]);
});
});
Zamiast testów jednostkowych mijania, pojawia się następujący komunikat:
Oczekiwane szpieg zostały nazwie z: [[ 'Hello', < jasmine.any (funkcja function() {[natywny kod]})>]] ale został wywołany z: [[ 'cześć', funkcja]]
Dlaczego nie jest to uznając, że funkcje mijam w (function() {}) w rzeczywistości są func Tions? Czego oczekuje ten kod natywny? Ktoś jeszcze miał ten problem z jasmine.any (funkcja)? Dziękuję Ci!
EDITED
Próbowałem za pomocą spyOn zamiast jasmine.createSpy(), a to sprawia, że nie ma różnicy. Próbowałem tylko jednego argumentu i to działa. Wprowadzenie pierwszego argumentu ciągu łamie jasmine.any (funkcja) - wszelkie pomysły?
Zobacz moje zmiany w mojej oryginalnej odpowiedzi. Próbowałem spyOn - bez różnicy. Czy masz przykład do pracy z wieloma argumentami? –
nevermind - naprawiono. Dzięki za odpowiedź. –