2016-09-13 3 views
0

아래 코드 예제를 참조하십시오. 각도기로 GULP 작업을 실행하는 각도기 테스트가 있습니다.

모든 블록에 대해 일부 REST 호출을 조롱 할 수 있기를 원하지만 특정 블록에 대한 httpBackend에 대한 액세스 권한도 있습니다. 범위의 내가 실행 함수 내에서이기 때문에 내가 this.VARIABLE_NAME을 사용할 수 없습니다

  • :

    나는 문제가 있지만 주위에 $ httpBackend을 변수를 공유하는 데 문제가 있습니다.

코드 예

describe('Train Station Search Component', function() { 

    beforeEach(function() { 
     //Mock any REST calls here. 
     browser.addMockModule('httpBackendMock', function() { 
     angular.module('httpBackendMock', ['MyApp', 'ngMockE2E']) 
       .run(function($httpBackend) { 
        //Mock call relevant to both it blocks. 
        $httpBackend.whenPOST(/^(.*\/api\/search)/).respond({...}); 
       }); 
     }); 
    ); 

    it('should check one piece of functionality', function() { 
     //Expect call with data relevant only for this it block. 
     $httpBackend.expectPOST(...); 
    }); 

    it('should check another piece of functionality', function() { 
     //Expect call with data relevant only for this it block. 
     $httpBackend.expectPOST(...); 
    }); 

}; 

어떤 도움에 감사드립니다.

답변

0

$ injector를 사용하여 $ httpBackEnd 서비스를 삽입 할 수 있습니다.

var $httpBackend 
beforeEach(inject(function($injector) { 
// Set up the mock http service responses 
$httpBackend = $injector.get('$httpBackend'); 
}); 

+0

https://docs.angularjs.org/api/ngMock/service/$httpBackend가 의존 주셔서 감사합니다 링크를 통해 이동합니다. 나는 그걸 가지고 아무런 행운을 느끼지 못한다. HTML 페이지에 ng-mock.js가 있지만 주입하는 테스트를 실행하는 중에 정의되지 않은 오류 메시지가 표시된다. 브라우저 창에있는 객체입니다. 나는 이것을 executeScript를 사용하여 얻을 수 있지만 조금 해킹하는 것처럼 보입니다. –