2013-04-06 2 views
1

Я новичок в AngularJS и тестировании JS в целом, и у меня возникли проблемы с тем, чтобы обдумать, как пройти тестирование этого довольно простого сервиса. Я пробовал использовать $ httpBackend с «когда» и «ожидать» GET в конфигурациях вариантов, но безрезультатно. Тест должен проверить, что 1) данные возвращаются через отложенное. Решают и 2) никакие данные не возвращаются через отложенный. Если бы кто-то мог указать мне в правильном направлении, я был бы очень благодарен. Благодаря!

BTW: Я использую Жасмин + 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; 
     } 
    } 
}) 
+0

httpBackend должно это сделать. Можете ли вы опубликовать некоторый тестовый код, который не работает? –

+1

Используете ли вы $ httpBackend.flush()? – Destron

ответ

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'); 
}));