26 lines
		
	
	
		
			731 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			26 lines
		
	
	
		
			731 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | /** | ||
|  |  * 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 { | ||
|  |   return () => { | ||
|  |     return new Promise<void>((finishCallback, failCallback) => { | ||
|  |       var AsyncTestZoneSpec = Zone['AsyncTestZoneSpec']; | ||
|  |       var testZoneSpec = new AsyncTestZoneSpec(finishCallback, failCallback, 'test'); | ||
|  |       var testZone = Zone.current.fork(testZoneSpec); | ||
|  |       return testZone.run(fn); | ||
|  |     }); | ||
|  |   } | ||
|  | } |