Angularjs 茉莉花http回报承诺
我想从一个url测试te响应的状态,保存在一个对象中,但是karma向我显示了以下错误:预期的承诺({&&state:object({status:0}})})为(whatelse) Mi服务是:Angularjs 茉莉花http回报承诺,angularjs,jasmine,promise,karma-runner,Angularjs,Jasmine,Promise,Karma Runner,我想从一个url测试te响应的状态,保存在一个对象中,但是karma向我显示了以下错误:预期的承诺({&&state:object({status:0}})})为(whatelse) Mi服务是: angular.module('ServiceModule', []). service('anonymous_Login_Services', ['$http','$q', function($http,$q){ var data={dato:null,estado:null}; this
angular.module('ServiceModule', []).
service('anonymous_Login_Services', ['$http','$q', function($http,$q){
var data={dato:null,estado:null};
this.loadData=function(){
var defered=$q.defer();
$http({
method: 'POST',
url: 'http://example.com/',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: "grant_type=client_credentials"
})
.success(function(inf,state){
data.dato=inf;
data.estado=state;
defered.resolve(data);
})
.error(function(inf,state){
data.dato=inf;
data.estado=state;
defered.reject(data);
});
return defered.promise;
}
}]);
还有茉莉花测试:
describe('Test servicios', function () {
var anomlogin, $httpBackend, $q;
beforeEach(module('ServiceModule', function($provide) {
}));
beforeEach(inject(function (_$httpBackend_,_$q_, _anonymous_Login_Services_) {
$httpBackend = _$httpBackend_;
anomlogin = _anonymous_Login_Services_;
$q = _$q_;
}));
it('Token', function () {
var status2=0;
var estado= anomlogin.loadData();
console.log(estado);
expect(anomlogin.loadData()).toBe(status2);
});
});
我不想用httpbackend对http post进行模拟,我想比较对象,其中一个对象是通过服务中的post获得的
非常感谢。如果不检查承诺的解析值,您的测试将毫无意义。这就是jasmine的
done
参数的作用:
function failTest(error) {
expect(error).toBeUndefined();
}
it('Token', function (done) {
var status2=0;
anomlogin.loadData()
.then(function (result) {
expect(result).toBe(status2);
})
.catch(failTest)
.finally(done);
});