角度测试失败的承诺

时间:2016-04-28 11:20:37

标签: javascript angularjs unit-testing angular-promise httpbackend

我正在尝试测试失败的承诺

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

0 个答案:

没有答案