So che questa non è necessariamente la risposta che stai cercando, ma quello che ho trovato è che la maggior parte delle volte se vale la pena testare una funzione privata, vale la pena trovarsi nel suo file.
Ad esempio invece di avere metodi privati nello stesso file di quelli pubblici, come questo ...
src / cosa / 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 hai suddiviso in questo modo:
src / cosa / 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 / cosa / interni / helper1.js
export function helper1 (x) {
return 2 * x;
}
src / cosa / interni / helper2.js
export function helper2 (x) {
return 3 * x;
}
In questo modo, puoi facilmente testare helper1
e così helper2
com'è, senza usare Rewire e altre "magie" (che, ho scoperto, hanno i loro punti deboli durante il debug o quando provi a muoverti verso TypeScript, per non parlare dei più poveri comprensibilità per i nuovi colleghi). E il fatto che si trovino in una sottocartella denominata internal
, o qualcosa del genere, aiuterà a evitare un uso accidentale di essi in luoghi non previsti.
PS: Un altro problema comune con i metodi "privati" è che se si vuole testare publicMethod1
e publicMethod2
e deridere l'aiutanti, ancora una volta, che normalmente bisogno di qualcosa come Rewire per farlo. Tuttavia, se si trovano in file separati, è possibile utilizzare Proxyquire per farlo, che, a differenza di Rewire, non ha bisogno di modifiche al processo di compilazione, è facile da leggere e da debug e funziona bene anche con TypeScript.