이 모듈을 jasmine에서 어떻게 테스트합니까? 문제는 $controller
을 테스트하는 것이 매우 어렵다는 것입니다. 기능이 클로저 내부에 숨겨져있어 테스트하기가 매우 어렵 기 때문입니다.jasmine을 사용하여 IIFE 내부에 정의 된 angularjs 모듈을 테스트하는 방법은 무엇입니까?
즉, 아래 모듈 정의에서 MainCtrl에 대한 단위 테스트를 작성하는 것은 불가능한 것처럼 보입니다.
(function() {
'use strict';
angular.module('app', []);
function MainCtrl() {
var mc = this;
mc.obj = {
val : 50
};
}
angular.module('app').controller('MainCtrl', MainCtrl);
}());
및 "일반"자스민 시험
describe('app', function(){
beforeEach(module('app'));
it('should create an objet with val 50', inject(function(_$controller_) {
var scope = {},
ctrl = _$controller_('MainCtrl', {$scope:scope});
expect(scope.obj.val).toBe(50); // returns Expected undefined to be 50.
}));
});
경우 각 분사 쟈스민 테스트 기능 내부 _$controller_
서비스 미정 $ 범위와 제어기 생성 복귀 인스턴스.
그럼 어떻게 테스트 할 수 있습니까?
이 문제에 대한 해결책을 찾기 위해 StackOverflow에서 내 검색을 시도해 보았습니다. 내가 찾던 답변을 제공하지 않았기 때문에 내 자신을 구현했습니다.
:
var scope = $rootScope.$new();
빌드 컨트롤러 :
inject(function (_$controller_, _$rootScope_)
새로운 영역을 구축 질문은 동등하다. 그러나 현재 나는이 질문이 불분명하고 덜 유용하다고 생각한다. 이것을 명확하고 간결한 질문으로 다시 말할 수 있습니까 ([ask] 참조)? 지금은 설명이없는 코드 블록에 불과합니다. –