1

我是 AngularJS 和一般 JS 测试的新手,我在思考如何测试这个相当简单的服务时遇到了麻烦。我尝试在变体配置中使用 $httpBackend 和 'when' 和 'expect' GET,但无济于事。测试应验证 1) 数据通过 deferred.resolve 返回,2) 没有数据通过 deferred.reject 返回。如果有人能指出我正确的方向,我将不胜感激。谢谢!

顺便说一句:我正在使用 Jasmine + Testacular

.service('myService', function($http, $q) {
    return {
        getMyData: function() {
            var deferred = $q.defer();

            $http.get('/foo/bar.do').success(function(data) {
                deferred.resolve(data);
            }).error(function(){
                deferred.reject();
            });

            return deferred.promise;
        }
    }
})
4

1 回答 1

1

我在使用 $http 和 $q 测试服务时遇到了同样的问题。这是我通过的测试之一:

it('should issue a GET request to /foo/bar.do', inject(function ($httpBackend) {
  $httpBackend.when('GET', '/foo/bar.do').respond('success');
  var finalResult = '';

  var result = myService.getMyData();

  result.then(function(data) {
    finalResult = data;
  }, function() {
    console.log('error');
  });

  $httpBackend.flush();

  expect(finalResult).toBe('success');
}));
于 2013-07-12T23:57:26.300 回答