このテストでどこが間違っているのか分かりません。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 ''.
EDIT/ANSWER
it('clears message', function() {
self.clearMessage().then(function(response) {
expect(response).toBe('');
})
$timeout.flush();
});
製造。私は物事を正しくテストしていないと感じています。 とにかく、ありがとう –