지시문을 테스트하는 동안 종속 삽입 (이해) 문제가 있습니다 (보류중인 요청이있을 때만 표시되는 AjaxLoader).AngularJS에서의 응용 프로그램 및 테스트의 주입 종속성 이해
앱 선언 :
angular.module('app', [
'directives.ajaxLoader',
'services.httpRequestTracker',
[...]
])
지침 코드 :
angular.module('directives.ajaxLoader', [])
.directive('ajaxLoader', ['httpRequestTracker',
function(httpRequestTracker) {
return {
templateUrl: 'common/ajaxLoader.tpl.html',
link: function($scope) { // This function can have more parameters after $scope, $element, $attrs, $controller
$scope.hasPendingRequests = function() {
return httpRequestTracker.hasPendingRequests();
};
}
};
}
])
테스트 코드 : 거기에서
describe('ajaxLoader', function() {
beforeEach(function() {
module('directives.ajaxLoader', 'common/ajaxLoader.tpl.html');
});
describe('ajaxLoader directive', function() {});
});
, 내 지시어는 브라우저에서 완벽하게 작동하지만 테스트는 실패 같은 오류 :
Error: [$injector:unpr] Unknown provider: httpRequestTrackerProvider <- httpRequestTracker <- ajaxLoaderDirective
좋아, 그래서 내 어딘가에 의존성을 주입해야합니다. 내 직접 테스트 코드에
angular.module('directives.ajaxLoader', [ 'services.httpRequestTracker' ])
- : 직접 내 지시에
- : 나는 두 가지 솔루션이
beforeEach(function() { module('directives.ajaxLoader', 'common/ajaxLoader.tpl.html', 'services.httpRequestTracker'); });
두 작품,하지만 난하지 않습니다 어느 쪽이 더 좋은지 이해하십시오 그리고 왜입니까? 그리고 처음부터 브라우저에서 작동하고 테스트에서 실패한 이유는 무엇입니까? 두 경우 모두 나의 지시 및 추적기 내 주요 애플 리케이션 선언에
감사
감사합니다. 이렇게 자세히 설명해 주셔서 감사합니다;) 제 첫 번째 해결책은 '직접적인 지시에 따라'입니다. 대신 모의 테스트를 제공하거나 모의 테스트 결과를 투입해야합니까? –
안녕하세요! 당신은 두 가지 별도의 것들처럼 환경과 응용 프로그램을 테스트하는 것을 고려해야합니다. 응용 프로그램에 관한 : 귀하의 지시에 주입 뭔가가 필요하면, 그것을 위해 가십시오. 삽입하면 아마도 모듈의 종속물로 선언되어야합니다. 이제, 테스트에 관해서 : 지시문에 뭔가를 주입했다면, 모의 함수 응답을 제공하기 위해 조롱하거나 간첩해야합니다. –