У меня есть следующий модуль Я пытаюсь проверить в Jest:Как издеваются импортируемого имени функции в Jest, когда модуль unmocked
// myModule.js
export function otherFn() {
console.log('do something');
}
export function testFn() {
otherFn();
// do other things
}
Как было показано выше, она экспортирует некоторые названные функции и, что важно testFn
использует otherFn
,
В Шутках, когда я пишу мое модульное тестирование для testFn
, я хочу, чтобы дразнить функцию otherFn
, потому что я не хочу ошибок в otherFn
, чтобы повлиять на мое модульное тестирование для testFn
. Моя проблема заключается в том, что я не уверен, что лучший способ сделать это:
// 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()
});
});
Любая помощь/понимание ценится.
Я бы не сделать это , Издевательство вообще не то, что вы хотите сделать в любом случае. И если вам нужно что-то издеваться (из-за вызова сервера/etc.), Вы должны просто извлечь 'otherFn' в отдельный модуль и издеваться над этим. – kentcdodds
Я также тестирую с использованием того же подхода @jrubins. Тестирование поведения 'function A', которое вызывает' функцию B', но я не хочу выполнять реальную реализацию 'функции B', потому что я хочу просто проверить логику, реализованную в' function A' – jplaza
@kentcdodds, не могли бы вы пояснить что вы подразумеваете под «Mocking, как правило, вы не хотите делать в любом случае»? Это кажется довольно широким (чрезмерно широким?) Утверждением, поскольку насмехается, конечно, что-то, что часто используется, по-видимому, для (по крайней мере некоторых) веских причин. Итак, вы, возможно, ссылаетесь на то, почему насмешка не может быть хорошей, или вы действительно имеете в виду вообще? –