Javascript 不履行承诺的角度检验

Javascript 不履行承诺的角度检验,javascript,angularjs,unit-testing,angular-promise,httpbackend,Javascript,Angularjs,Unit Testing,Angular Promise,Httpbackend,我正试图检验一个失败的承诺 service 'resolveService' function: return {resolveRedirect: function(){ var deferred = $q.defer(); $http.jsonp('randomUrl') .then(function(response){ json

我正试图检验一个失败的承诺

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错误
,承诺应该失败,测试应该通过?

当然,它会在这条线上抛出一个错误-真怎么可能等于假?承诺永远不会达到这一部分,因为我预计它会失败。因此,它应该直接转到“我们错了”部分。但它永远不会出现在那里,而是出现在“成功”块中。@Dribel在拒绝中更改
deferred.resolve(err)
deferred.reject(err)
section@KrzysztofSafjanowski太好了,行得通。谢谢然而,我必须解决这个承诺,我不能拒绝它(这是需要解决的resolve block it$状态的一部分)。还有别的办法吗?对不起,我刚知道@KrzysztofSafjanowski再次感谢。当然,这会在这条线上抛出一个错误-真的怎么可能等于假?承诺永远不应该达到这一部分,因为我预计它会失败。因此,它应该直接转到“我们错了”部分。但它永远不会出现在那里,而是出现在“成功”块中。@Dribel在拒绝中更改
deferred.resolve(err)
deferred.reject(err)
section@KrzysztofSafjanowski太好了,行得通。谢谢然而,我必须解决这个承诺,我不能拒绝它(这是需要解决的resolve block it$状态的一部分)。还有别的办法吗?对不起,我刚知道@KrzysztofSafjanowski再次感谢你。