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);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |