我正在尝试测试失败的承诺
service 'resolveService' function:
return {resolveRedirect: function(){
var deferred = $q.defer();
$http.jsonp('randomUrl')
.then(function(response){
jsonpResponse.responseHandler(response.data);
deferred.resolve(1);
}, function(err){
jsonpResponse.responseHandler({});
deferred.resolve(err);
});
return deferred.promise;
},
}
我希望测试失败,并写下以下内容:
spyOn(jsonpResponse,'responseHandler');
$httpBackend.expectJSONP('randomUrl').respond(400, {});
var promise = resolveService.resolveRedirect();
var result;
promise.then(function(data){
console.log('we are in success');
expect(true).toEqual(false);
},function(err){
console.log('we are in error');
result = err;
expect(result).toEqual(err);
});
$httpBackend.flush();
expect(jsonpResponse.responseHandler).toHaveBeenCalledWith({});
运行此测试时,它表示expect(true).toEqual(false);
错误。控制台也告诉我,这个承诺在实际上取得了成功并提示“我们取得了成功”。编辑:它走向了错误的块。它应该进入“我们是错误的”。
我哪里错了?由于我期待400 error
,承诺应该失败,测试应该通过吗?