1

私は AngularJS と JS テスト全般に不慣れで、このかなり単純なサービスをテストする方法について頭を悩ますのに苦労しています。バリエーション構成で $httpBackend を 'when' および 'expect' GET と共に使用しようとしましたが、役に立ちませんでした。テストでは、1) deferred.resolve 経由でデータが返されること、および 2) deferred.reject 経由でデータが返されないことを確認する必要があります。誰かが私を正しい方向に向けることができれば、私はとても感謝しています. ありがとう!

ところで:私はジャスミン+テスタキュラーを使用しています

.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 を使用してサービスをテストするのと同じような問題がありました。ここに合格した私のテストの1つがあります:

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 に答える