Mam następujące moduł próbuję przetestować żartem:Jak drwić importowane nazwie funkcji żartem, gdy moduł jest unmocked
// myModule.js
export function otherFn() {
console.log('do something');
}
export function testFn() {
otherFn();
// do other things
}
Jak przedstawiono powyżej, eksportuje niektórych nazwanych funkcje i ważniejsze testFn
wykorzystuje otherFn
.
żartem kiedy piszę mój testów jednostkowych dla testFn
chcę drwić funkcję otherFn
bo nie chcę błędów otherFn
mieć wpływ na moją testów jednostkowych dla testFn
. Mój problem polega na tym, że nie jestem pewien, jak to zrobić:
// myModule.test.js
jest.unmock('myModule');
import { testFn, otherFn } from 'myModule';
describe('test category',() => {
it('tests something about testFn',() => {
// I want to mock "otherFn" here but can't reassign
// a.k.a. can't do otherFn = jest.fn()
});
});
Każda pomoc/wgląd jest mile widziany.
Nie chciałbym to zrobić . Kpiny z reguły nie są czymś, co i tak chcesz robić. A jeśli chcesz wyśmiać coś (z powodu nawiązywania połączeń z serwerem/etc.), Powinieneś po prostu wyodrębnić 'otherFn' w oddzielny moduł i wyśmiewać to. – kentcdodds
Testuję również z użyciem tego samego podejścia do @jrubins. Testuj zachowanie 'funkcji A', która wywołuje' funkcję B', ale nie chcę wykonywać prawdziwej implementacji 'funkcji B', ponieważ chcę przetestować logikę zaimplementowaną w' funkcji A' – jplaza
@kentcdodds, Czy mógłbyś wyjaśnić co masz na myśli, mówiąc: "Kpiny z reguły nie są czymś, co i tak chcesz robić"? Wydaje się to być dość szerokim (zbyt szerokim?) Stwierdzeniem, ponieważ kpiny z pewnością są czymś często używanym, prawdopodobnie z (przynajmniej niektórych) dobrych powodów. Może więc powołujesz się na to, dlaczego kpiny mogą nie być dobre, czy naprawdę masz na myśli w ogóle? –