2016-04-26 16:06:50 -04:00
|
|
|
/**
|
|
|
|
* Wraps a test function in an asynchronous test zone. The test will automatically
|
|
|
|
* complete when all asynchronous calls within this zone are done. Can be used
|
|
|
|
* to wrap an {@link inject} call.
|
|
|
|
*
|
|
|
|
* Example:
|
|
|
|
*
|
|
|
|
* ```
|
|
|
|
* it('...', async(inject([AClass], (object) => {
|
|
|
|
* object.doSomething.then(() => {
|
|
|
|
* expect(...);
|
|
|
|
* })
|
|
|
|
* });
|
|
|
|
* ```
|
|
|
|
*/
|
|
|
|
export function async(fn: Function): Function {
|
2016-05-26 16:33:53 -04:00
|
|
|
return () => new Promise<void>((finishCallback, failCallback) => {
|
2016-06-08 18:45:15 -04:00
|
|
|
var AsyncTestZoneSpec = (Zone as any /** TODO #9100 */)['AsyncTestZoneSpec'];
|
2016-04-26 16:06:50 -04:00
|
|
|
var testZoneSpec = new AsyncTestZoneSpec(finishCallback, failCallback, 'test');
|
|
|
|
var testZone = Zone.current.fork(testZoneSpec);
|
|
|
|
return testZone.run(fn);
|
|
|
|
});
|
|
|
|
}
|