ジャスミンでAngularのコードをテストする必要がありますが、$ timeoutコールが原因でこれを行うことができません。ジャスミンを使用してJSコールバックをタイムアウトでテストする
$scope.add = function() {
SomeService.add(id, function() {
$timeout(function() {
$scope.showSuccessMessage();
}, 1000)
}, function() {})
};
ので、テストコードは次のとおりです:だからコードは次のようになります
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();
});
});
そして問題は、タイムアウトコールの私はshowSuccessMessage()が呼び出されていることを確認することができないということです。私はJasmineがタイムアウトで作業する能力について知っていますが、その場合コールバックで呼び出すために作業方法を見つけることができません。だから、私は助けが必要です。ありがとう。角度の働きを持つ
外
showSuccessMessage
のspy
とexpect
を置くあなたはsetTimeout' 'の下で期待に置くことができ、それは私の作品:) – Nemani