나는 이것이 반드시 당신이 찾고있는 대답은 아니라는 것을 알고 있지만, 내가 찾은 것은 개인 함수가 테스트 할 가치가 있다면 대부분 자체 파일에있을 가치가 있다는 것입니다.
예를 들어 다음과 같이 공개 메소드와 동일한 파일에 개인 메소드를 갖는 대신 ...
src / thing / PublicInterface.js
function helper1 (x) {
return 2 * x;
}
function helper2 (x) {
return 3 * x;
}
export function publicMethod1(x) {
return helper1(x);
}
export function publicMethod2(x) {
return helper1(x) + helper2(x);
}
... 당신은 이것을 다음과 같이 나누었습니다.
src / thing / PublicInterface.js
import {helper1} from './internal/helper1.js';
import {helper2} from './internal/helper2.js';
export function publicMethod1(x) {
return helper1(x);
}
export function publicMethod2(x) {
return helper1(x) + helper2(x);
}
src / thing / internal / helper1.js
export function helper1 (x) {
return 2 * x;
}
src / thing / internal / helper2.js
export function helper2 (x) {
return 3 * x;
}
이렇게 하면 Rewire 및 기타 "마법"(디버깅 중 자체 문제점이 있거나 디버깅 할 때 어려움을 겪을 때 또는 TypeScript로 이동하려고 할 때)을 사용하지 않고도 쉽게 테스트 helper1
하고 helper2
그대로 사용할 수 있습니다. 새로운 동료에 대한 이해도). 그리고 하위 폴더 internal
또는 이와 유사한 폴더에 있으면 의도하지 않은 장소에서 실수로 사용되는 것을 피할 수 있습니다.
PS : "개인"방법과 또 다른 일반적인 문제는 당신이 테스트하려는 경우이다 publicMethod1
와 publicMethod2
와 헬퍼를 조롱 다시, 당신은 일반적으로 그렇게 재배 선 같은 것을해야합니다. 그러나 파일이 별도의 파일에 있으면 Proxyquire 를 사용 하여 이를 수행 할 수 있습니다. Rewire와 달리 빌드 프로세스를 변경할 필요가없고 읽고 디버깅하기 쉽고 TypeScript 와도 잘 작동합니다.