Ich muss einige Code in Angular mit Jasmine testen, aber die Sache ist, dass ich dies wegen $ Timeout-Aufruf nicht tun kann. So sieht der Code wie folgt aus:Testen von JS Callback mit Timeout mit Jasmine
$scope.add = function() {
SomeService.add(id, function() {
$timeout(function() {
$scope.showSuccessMessage();
}, 1000)
}, function() {})
};
So ist der Testcode ist:
describe('method add', function() {
it('should add', function() {
spyOn(SomeService, 'add').and.callFake(function(id, successCallback, errorCallback) {
spyOn(scope, 'showSuccessMessage');
successCallback();
expect(scope.showSuccessMessage).toHaveBeenCalled();
});
scope.add();
expect(SomeService.add).toHaveBeenCalled();
});
});
Und das Problem ist, dass wegen der Timeout Anruf, den ich nicht, dass showSuccessMessage überprüfen() aufgerufen wurde. Ich weiß, dass Jasmine mit Timeouts arbeiten kann, aber in diesem Fall kann ich keinen funktionierenden Weg finden, weil ich es im Callback anrufe. Deshalb brauche ich Hilfe. Vielen Dank.
setzen konnte man unter 'setTimeout' setzen erwarten, funktioniert es für mich :) – Nemani