下のコードだと$timeoutサービスのコールバックが実行さずにタイムアウトしてしまう。
appSpec.js
it('$timeout test', function () {
var value = null;
$timeout(function () {
value = 'hoge';
}, 100);
expect(value).toBeNull();
waitsFor(function () {
return value !== null;
}, 'timeout', 200);
runs(function () {
expect(value).toEqual('hoge');
});
});
どうやら$timeout.flush(delay)
をコールしてタイマーを進めると実行されるようになる模様。
appSpec.js
it('$timeout test', function () {
var value = null;
$timeout(function () {
value = 'hoge';
}, 100);
expect(value).toBeNull();
$timeout.flush();
expect(value).toEqual('hoge');
});