2014-02-10 3 views
1

저는 AngularJS로 웹 응용 프로그램을 만들고 내 컨트롤러가 데이터를 작성, 검색, 업데이트 및 삭제하는 데 사용하는 AngularJS 서비스를 구축했습니다. 다른 개발자에게 UI 작업을 배양하고 싶지만, AngularJS 서비스가 수행하는 종속성을 요구하지는 않습니다. 나는 모의 서비스를 구축하고 실제 REST 서비스를 호출하는 대신 모의 데이터를 반환하고자합니다.AngularJS의 모의 서비스를 사용하여 REST 통화를 분리하는 가장 좋은 방법

var myApp = angular.module('myApp', ['ui.bootstrap']); 

내 컨트롤러가 현재 사용 서비스까지 후크 :

내 응용 프로그램은 다음과 같이 설정

myApp.controller('TodoCtrl', function TodoCtrl($scope, $JSOMService) { 
    $JSOMService.DoStuff(); 
}); 

을 그리고 내 서비스는이

myApp.service('$JSOMService', function ($q, $http) { ... }); 

과 같이 정의된다 다른 서비스를 위해 서비스를 전환하는 가장 좋은 방법은 무엇입니까? 이것은 단위 테스트와 조금 다르며 이렇게하는 일반적인 방법이 있는지 궁금합니다.

당분간 저는 이것을 처리하기 위해로드 된 Angularjs Service javascript 파일을 전환하는 코드베이스가 약간 다릅니다.

답변

2

주사를 제어하는 ​​제공 업체 서비스에 직접 액세스 할 수 있습니다. 그것은 $를 주입 제공이 같은, 보일 것이다 :

$provide.value('$JSOMService', MockJSOMService()); 

이 기본적으로 말할 것이다, 누군가가 $ JSOMService 요청 될 때마다, MockJSOMService에서 반환 된 무엇을 제공합니다.

앱을 설정할 때 설정할 수 있습니다. 이와 같이 :

myApp.run(['$provide', function($provide) { 
    $provide.value('$JSOMService', MockJSOMService()); 
}]); 

이것은 기본적으로 서비스를 전환 할 수있는 방법입니다. 틀림없이 조금 펑키지만, 이것이 도움이되기를 바랍니다!

+0

고맙습니다. 문맥에서 볼 때 훨씬 명확합니다. –

관련 문제