Sé que esta no es necesariamente la respuesta que está buscando, pero lo que he encontrado es que la mayoría de las veces si vale la pena probar una función privada, vale la pena estar en su propio archivo.
Por ejemplo, en lugar de tener métodos privados en el mismo archivo que los públicos, como este ...
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);
}
... lo dividiste así:
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;
}
De esa manera, puede probar fácilmente helper1
y helper2
tal cual, sin usar Rewire y otras "magias" (que, según he descubierto, tienen sus propios puntos de dolor durante la depuración, o cuando intenta avanzar hacia TypeScript, sin mencionar que son más pobres) comprensibilidad para nuevos colegas). Y estar en una subcarpeta llamada internal
, o algo así, ayudará a evitar su uso accidental en lugares no deseados.
PD: Otro problema común con los métodos de "privado" es que si quieres prueba publicMethod1
y publicMethod2
y burlas de los ayudantes, de nuevo, que normalmente necesita algo así como Recablear de hacer eso. Sin embargo, si están en archivos separados, puede usar Proxyquire para hacerlo, que, a diferencia de Rewire, no necesita ningún cambio en su proceso de compilación, es fácil de leer y depurar, y funciona bien incluso con TypeScript.