클라이언트의 데이터와 상호 작용하고 서버를 호출하지 않는 여러 비동기 메서드를 실행해야하는 컨트롤러가 있습니다. 브라우저에서 제대로 작동하는 한 가지 방법이 있지만 테스트를 통해 메서드를 실행하고 테스트 환경 (Karma 및 Mocha)에서 작동하도록 할 수 없습니다. 그 이유는 $ resource.query()가 반환하는 빈 배열은 약속이 해결되지 않기 때문에 테스트 환경에서 결코 채워지지 않기 때문입니다. 테스트 스위트에서 내 앞 부분이 있습니다.
beforeEach(inject(function($rootScope, $controller, scheduleService){
scope = $rootScope.$new();
sc = $controller('scheduleCtrl', {
$scope: scope, service: scheduleService
});
scope.$apply();
}));
scheduleCtrl 그것의 생성자 Resource.query 결과()에 할당 된 속성 스케줄을 갖는다. 반환 된 세 객체가 MockHttpExpectation에로드 된 것을 볼 수 있습니다.
하지만 테스트 sc.schedule는 여전히 비어있는 배열입니다 실행으로 이동, 그래서 테스트가 실패 할 때. 테스트에서 해결할 Resource.query()를 얻으려면 어떻게해야합니까?
나는 $ httpBackend 사용합니다. 브라우저에 데이터를 가져 오는 데는 문제가 없습니다. 테스트에서 & httpBackend.flush()를 사용하면 플러시 할 것이 없다는 오류가 발생합니다. – pthalacker
나는 약속의 그때의 방법 안에 기대를 동봉 할 때, 항상 통과한다. 그러나 동일한 메소드 내부의 console.writeline은 값 (예제에서)은 정의되지 않는다고 말합니다. – pthalacker