1
我不確定我在這個測試中出錯的地方。Jasmine,AngularJS:單元測試一個函數,它在超時後返回一個值
服務代碼:
self.clearMessage = function(interval) {
if (!interval)
interval = 2000;
return $timeout(function() {
return '';
}, interval);
};
規格:
it('clears message', function() {
var result = self.clearMessage();
$timeout.flush();
expect(result).toBe('');
});
我也試着引發消化週期試驗,但沒有成功。我之前從未遇到過這個問題,因爲我通常會在超時模塊內設置一個外部變量 - 這對於單元測試非常有效。
在這種情況下,當只有我收到以下錯誤超時內部回報:
Expected Promise({ $$state: Object({ status: 1, value: '' }), $$timeoutId: 1 }) to be ''.
編輯/ ANSWER
it('clears message', function() {
self.clearMessage().then(function(response) {
expect(response).toBe('');
})
$timeout.flush();
});
也沒有工作,但我希望它的工作就像我上面的預期,因爲這是這個函數是如何在使用生產。我覺得我沒有正確地測試一些東西。 無論如何,感謝您的幫助 –