fix(fakeAsync): have fakeAsync use Proxy zone. (#10797)
Closes #10503 It is possible for code in `beforeEach` to capture and fork a zone (for example creating `NgZone` in `beforeEach`). Subsequently the code in `it` may chose to do `fakeAsync`. The issue is that because the code in `it` can use `NgZone` from the `beforeEach`. it effectively can escape the `fakeAsync` zone. A solution is to run all of the test in `ProxyZone` which allows a test to dynamically replace the rules at any time. This allows the `beforeEach` to fork a zone, and then `it` to retroactively became `fakeAsync` zone.
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {fakeAsync, tick} from '@angular/core/testing';
|
||||
import {async, fakeAsync, tick} from '@angular/core/testing';
|
||||
import {AsyncTestCompleter, beforeEach, ddescribe, describe, iit, inject, it, xit} from '@angular/core/testing/testing_internal';
|
||||
import {FormControl, FormGroup, Validators} from '@angular/forms';
|
||||
|
||||
@ -624,8 +624,14 @@ export function main() {
|
||||
});
|
||||
|
||||
describe('statusChanges', () => {
|
||||
const control = new FormControl('', asyncValidatorReturningObservable);
|
||||
const group = new FormGroup({'one': control});
|
||||
let control: FormControl;
|
||||
let group: FormGroup;
|
||||
|
||||
beforeEach(async(() => {
|
||||
control = new FormControl('', asyncValidatorReturningObservable);
|
||||
group = new FormGroup({'one': control});
|
||||
}));
|
||||
|
||||
|
||||
// TODO(kara): update these tests to use fake Async
|
||||
it('should fire a statusChange if child has async validation change',
|
||||
|
Reference in New Issue
Block a user