2016-05-30 72 views
0

我试图建立一个涉及承诺的测试。这里是我的示例代码:Promise.resolve()。然后不工作在茉莉花测试

var promise; 

beforeEach(inject(function ($q) { 
    promise = $q.resolve(); 
})); 

it('should resolve', function (done) { 
    promise.then(function() { 
     expect(true).toBeTruthy(); 
     done(); 
    }); 
}); 

出于某种原因,当我运行它,我得到一个TIMEOUT

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 

为什么不承诺执行给then回调?

干杯

+0

这是没有必要使用承诺完成的方法。 –

回答

3

你需要调用范围/ rootScope $ digest方法来解决的承诺。 所以它应该是:

var result = false; 
promise.then(function() { result = true;}); 
$rootScope.$digest(); 
expect(result).toBeTruthy(); 
+2

你不应该实际调用$摘要? –

+0

如果有任何$ rootScope。$ digest()。可能被try/catch包围。尽管如此,我也不适合我。 –