드러난 모듈 패턴과 잠깐의 로맨스를 쓴 후에 단위 테스트 모듈에 관해서는 뒤늦게 깨달았습니다. 그러나 모듈 테스트에 대한 내 접근 방식인지 또는 어떤 형태의 해결 방법이 있는지 여부를 결정할 수는 없습니다. 나는 (재스민 사용) publicMethodB에 publicMethodA 통해 선도하는 다양한 경로를 테스트하고 싶었모듈 패턴 노출 - 재스민을 이용한 단위 테스트
var myWonderfulModule = (function() {
function publicMethodA (condition) {
if(condition === 'b') {
publicMethodB();
}
}
function publicMethodB() {
// ...
}
return {
methodA : publicMethodA,
methodB : publicMethodB
}
}());
:
는 다음과 같은 코드를 생각해 보자. 나는 작은 시험과 같이 작성할 수 있습니다
it("should make a call to publicMethodB when condition is 'b'", function() {
spyOn(myWonderfulModule , 'publicMethodB');
myWonderfulModule.publicMethodA('b');
expect(myWonderfulModule.publicMethodB).toHaveBeenCalled();
});
만약 내가 제대로 이해하고, 변경할 수 없습니다 폐쇄 내 publicMethodB의 사본이있다. 내가 나중에 myWonderfulModule.publicMethodB을 변경하더라도 : myWonderfulModule.publicMethodA
를 호출
myWonderfulModule.publicMethodB = undefined;
는 여전히 B.
의 원본 버전을 실행위의 예는 물론 간단하다하지만 난 곳을 생각할 수있는 시나리오가 많이 있습니다 메소드를 통해 조건부 경로를 단위 테스트하는 것이 편리합니다.
이것은 노출 모듈 패턴의 제한입니까 아니면 단순히 단위 테스트의 오용입니까? 어떤 해결 방법을 사용할 수 없습니까? RequireJS와 같은 것으로 이동하거나 비 모듈 코드로 되돌아 갈 것을 고려 중입니다.
감사합니다.