我發現幾個職位的測試服務,說明此代碼的方式來進行異步單元測試:AngularJS,摩卡,柴:有承諾
服務:
angular.module('miservices', [])
.service('myAppServices', ['$http', 'httpcalls', function($http, httpcalls) {
this.getAccountType = function(){
return httpcalls.doGet('http://localhost:3010/...').then(function(data){
return data;
}, function(error){
...
});
};
...
測試:
describe('testing myAppServices', function(){
beforeEach(module('smsApp'));
it('should handle names correctly', inject(function(myAppServices){
myAppServices.getAccountType()
.then(function(data) {
expect(data).equal({...});
});
...
我們使用的是AngularJS,Mocha,Chai,我們安裝了Sinon。
測試永遠不會到達.then
部分,但爲什麼?
謝謝!
這個問題不是承諾,而是$ http。你必須嘲笑請求,你不這樣做。 – estus
你的意思是httpBackend他們? – Ramon
沒錯。如果doGet和getAccountType對實際的http響應沒有任何影響,那麼您可以跳過此規範,併爲其他規範模擬getAccountType。 – estus