Я знаю, что это не обязательно тот ответ, который вы ищете, но я обнаружил, что в большинстве случаев, если частную функцию стоит протестировать, стоит разместить ее в отдельном файле.
Например, вместо того, чтобы иметь частные методы в том же файле, что и общедоступные, например ...
ЦСИ / вещь / 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);
}
... вы разделите его так:
ЦСИ / вещь / 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);
}
ЦСИ / вещь / внутренний / helper1.js
export function helper1 (x) {
return 2 * x;
}
ЦСИ / вещь / внутренний / helper2.js
export function helper2 (x) {
return 3 * x;
}
Таким образом, вы можете легко проверить helper1
и helper2
как есть, без использования Rewire и другой «магии» (который я нашел, есть свои болевые точки во время отладки, или когда вы пытаетесь сделать свой шаг к машинопись, не говоря уже о бедных понятность для новых коллег). И то, что они находятся в подпапке с названием internal
или что-то в этом роде, поможет избежать их случайного использования в непредусмотренных местах.
PS: Еще одна распространенная проблема с «частными» методов является то , что если вы хотите проверить publicMethod1
и publicMethod2
и издеваться хелперов, опять же , вам обычно нужно что - то вроде Rewire , чтобы сделать это. Однако, если они находятся в отдельных файлах, вы можете использовать для этого Proxyquire , который, в отличие от Rewire, не требует каких-либо изменений в процессе сборки, легко читается и отлаживается и хорошо работает даже с TypeScript.