Saya tahu bahwa ini belum tentu jawaban yang Anda cari, tetapi apa yang saya temukan adalah bahwa sebagian besar waktu jika fungsi pribadi layak diuji, ada baiknya berada di file sendiri.
Misalnya alih-alih memiliki metode pribadi dalam file yang sama dengan yang publik, seperti ini ...
src / hal / 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);
}
... Anda membaginya seperti ini:
src / hal / 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 / hal / internal / helper1.js
export function helper1 (x) {
return 2 * x;
}
src / hal / internal / helper2.js
export function helper2 (x) {
return 3 * x;
}
Dengan begitu, Anda dapat dengan mudah menguji helper1
dan helper2
apa adanya, tanpa menggunakan Rewire dan "sihir" lainnya (yang, saya temukan, memiliki poin rasa sakitnya sendiri saat debugging, atau ketika Anda mencoba untuk bergerak menuju TypeScript, belum lagi lebih miskin dimengerti untuk kolega baru). Dan mereka yang berada di sub-folder bernama internal
, atau sesuatu seperti itu, akan membantu menghindari penggunaan mereka secara tidak sengaja di tempat yang tidak diinginkan.
PS: Masalah umum lainnya dengan metode "pribadi" adalah bahwa jika Anda ingin menguji publicMethod1
dan publicMethod2
dan mengejek pembantu, sekali lagi, Anda biasanya perlu sesuatu seperti Rewire untuk melakukan itu. Namun, jika mereka berada di file terpisah, Anda dapat menggunakan Proxyquire untuk melakukannya, yang, tidak seperti Rewire, tidak memerlukan perubahan apa pun pada proses pembuatan Anda, mudah dibaca dan di-debug, dan berfungsi dengan baik bahkan dengan TypeScript.