2015-01-26 4 views
0

컨트롤러에 대한 서비스를 조롱하려하지만이를 작동 시키려 애쓰는 중입니다. 나는이 서비스를 조롱 제공 $ 사용하는 테스트를 작성하는 것을 시도하고있다AngularJS : 모의 컨트롤러 서비스

.controller('someController', ['SomeService', function(SomeService){ 
    var self = this; 
    var data = []; 

    self.getSomeData = = function(){ 
     var response = SomeService.getSomething.then(function(response){ 
       self.data = response; 
     }); 
    }; 
}]); 

:

.factory('SomeService', ['$http'function($http) { 

    var someService = {}; 

    someService.getData=function(val1, val2){ 
     ... 
     return someData; 
    } 

    return someService; 
} 

그래서 같은 컨트롤러 : 반 psudeo 코드를 사용

나는 서비스를 . 이런 식으로 뭔가 :

var mockService 

beforeEach(module(function($provide){ 
    mockService.getSomething = function(){ 

      return [ ....]; 
    }; 

    $provide.value('SomeService', mockService); 

})); 

이 모의를 주입하고 테스트를 실행 한 후 내가 얻을 :

형식 오류 : 정의되지 않은

의 설정할 수없는 속성 getSomething 분명히이 코드 문제 (또는 오른쪽) 있나요 ? 그들은 매우 도움이 될 수있는,

describe('Some Service', function(){ 
    var mockService; 

    beforeEach(module(function($provide){ 
     mockService = { 
      getSomething: function() { 
       return { 
        then: function (success, error) { 
         success(true); 
        } 
       }; 
      } 
     }; 
     $provide.value('SomeService', mockService); 
    })); 
}); 

내가 the docs를 통해보고하는 것이 좋습니다 것입니다 :

답변

0

당신은 mockService에게 개체를 확인해야합니다.

+0

beforeEach 함수에서? –

+0

예. 좀 더 명확하게 대답을 업데이트했습니다. –

+0

응답 해 주셔서 감사하지만 작동하지 않습니다. 위의 정확한 코드를 사용하면 : 정의되지 않은 'then'속성을 읽을 수 없습니다. –

관련 문제