在进行ajax调用之前,我想要做一个测试。如果该测试是失败的情况我想立即拒绝,但似乎我不能这样做:
svc.test = function(foo){
var def = $q.defer();
if (!foo){
def.reject(new Error('failed'));
} else {
// get data via ajax here
def.resolve({})
}
return def.promise;
};
我尝试在setTimeout
周围添加def.reject()
,但我的单元测试不起作用。
it.only('should error ', function(){
return expect(MyServices.test()).to.eventually.be.rejectedWith('failed');
});
使用原生承诺可以正常工作,但我需要使用$q
执行此操作:
return Promise.reject(new Error('failed'));