2017-06-14 8 views
0

私は(簡体字)次のコードがありますユニットテストAngularJs:その後 - キャッチテスト問題

angular 
.module('myApp') 
.controller('MyController', MyController); 

function MyController(wordService) { 

    getWord(); 

    function getWord() { 

     return wordService.getNextWord() 
      .then(doSomethingWithWord) 
      .catch(doSomethingFailure); 

     function doSomethingWithWord(response) { 
      // ... something 
     } 

     function doSomethingFailure() { 
      // ... failing 
     } 
    } 
} 

を、私はそれをテストする必要があります。 ? 私は今、一日かけてこれに苦労していると私はそれが

はどのようにこのコードをテストするために

答えて

0

を将来のために:(働いて得ることができない、私はそれを考え出した: 私は$を使用する必要がありますqサービスと要求角ダイジェストサイクル

describe('MyController', function() { 

    var $controller, myController, wordService, $q, deferredResponse, scope; 

    beforeEach(function() { 
     module('myApp'); 
     inject(function(_$controller_, _wordService_, _$q_, $rootScope) { 
      $controller = _$controller_; 
      wordService = _wordService_; 
      scope = $rootScope.new(); 
      $q = _$q_; 
     }); 
     myController = $controller('MyController', {wordService:wordService}); 

     deferredResponse = $q.defer(); //deferring asynchronous response 
     spyOn(wordService, 'getNextWord').and.returnValue(deferredResponse.promise); 
    }); 

    describe('Testing WordService', function() { 
     it('Should get next word', function() { 
      deferredResponse.resolve({status: 200, data: {word: 123}}); 
      scope.$apply(); 

      expect(wordService.getNextWord).toHaveBeenCalled(); 
     }) 
    }) 
}); 
関連する問題