parent
ec3a78289f
commit
c7572ac1f9
|
@ -27,7 +27,7 @@ Function fakeAsync(Function fn) {
|
|||
a7 = _u, a8 = _u, a9 = _u]) {
|
||||
// runZoned() to install a custom exception handler that re-throws
|
||||
return runZoned(() {
|
||||
new quiver.FakeAsync().run((quiver.FakeAsync async) {
|
||||
return new quiver.FakeAsync().run((quiver.FakeAsync async) {
|
||||
try {
|
||||
_fakeAsync = async;
|
||||
List args = [
|
||||
|
@ -42,7 +42,9 @@ Function fakeAsync(Function fn) {
|
|||
a8,
|
||||
a9
|
||||
].takeWhile((a) => a != _u).toList();
|
||||
return Function.apply(fn, args);
|
||||
var res = Function.apply(fn, args);
|
||||
_fakeAsync.flushMicrotasks();
|
||||
return res;
|
||||
} finally {
|
||||
_fakeAsync = null;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,11 @@ export function fakeAsync(fn: Function): Function {
|
|||
ListWrapper.clear(_pendingPeriodicTimers);
|
||||
ListWrapper.clear(_pendingTimers);
|
||||
|
||||
var res = fakeAsyncZone.run(() => { var res = fn(... args); });
|
||||
let res = fakeAsyncZone.run(() => {
|
||||
let res = fn(... args);
|
||||
flushMicrotasks();
|
||||
return res;
|
||||
});
|
||||
|
||||
if (_pendingPeriodicTimers.length > 0) {
|
||||
throw new BaseException(
|
||||
|
|
|
@ -46,6 +46,18 @@ export function main() {
|
|||
});
|
||||
}
|
||||
|
||||
it('should flush microtasks before returning', () => {
|
||||
var thenRan = false;
|
||||
|
||||
fakeAsync(() => { PromiseWrapper.resolve(null).then(_ => { thenRan = true; }); })();
|
||||
|
||||
expect(thenRan).toEqual(true);
|
||||
});
|
||||
|
||||
|
||||
it('should propagate the return value',
|
||||
() => { expect(fakeAsync(() => 'foo')()).toEqual('foo'); });
|
||||
|
||||
describe('Promise', () => {
|
||||
it('should run asynchronous code', fakeAsync(() => {
|
||||
var thenRan = false;
|
||||
|
|
Loading…
Reference in New Issue