Sto scrivendo alcuni test per un modulo NodeJS, ma questa domanda può essere applicata per qualsiasi lingua / piattaforma. Ho la seguente situazione:
// in moduleA.js
exports.foo = function (var1, var2) {
// do something to var1 and var2 here
baz(var1, var2);
};
exports.bar = function (var1, var2) {
// do something completely different to var1 and var2 here
baz(var1, var2);
};
function baz(var1, var2) {
// do something to var1 and var2 yet again that both foo and bar need
moduleB.doSomething(var1, var2);
}
Quindi, sia foo che bar sono metodi pubblici di moduleA . Hanno alcune funzionalità specifiche (fanno cose diverse a var1 e var2 ) ma anche alcune funzionalità condivise (per mantenere le cose asciutte l'ho spostato in un metodo privato, baz ) e poi chiamano entrambe un metodo pubblico su moduleB .
Ho cancellato moduleB quindi so esattamente cosa sta succedendo dopo aver chiamato foo e bar . Sto scrivendo i test per foo e% per la funzionalità specifica di% di gen_de ma non sono sicuro al 100% come affrontare la verifica della funzionalità condivisa in bar .
Mi sembra di avere tre opzioni:
- scrivi test identici sia per
bazchefooche testano le cose inbar - scrivi un singolo test per
baze non scrivi lo stesso test perfoopoiché sai chebarfunziona - espone
bazcome un altro metodo pubblico per il modulo e testalo separatamente.
Mi sto appoggiando alla prima opzione, ma sento che potrei mancare qualcosa.