В этом случае нельзя смоделировать aRandomFunction
, потому что он не экспортируется.Хотя это явно не указано в документации Jest , обратите внимание на в примерах , что только импортируемый код может быть подделан с помощью Jest.Вы можете сосредоточиться на тестировании окончательного результата fetchAction
, и то, что происходит посередине, не имеет значения.Совершенно нормально не проверять его, потому что это детали реализации, то есть он определяет только средства, используемые fetchAction
для достижения своей цели, которые могут со временем измениться и сломать ваши тесты, даже если цель fetchAction
продолжает оставатьсяправильно достигнуто.
Но если для вас важно иметь возможность проверить aRandomFunction
, вам придется переместить его во внешний файл и экспортировать оттуда.После этого вы сможете имитировать его так же, как и другие зависимости, такие как handleError
и handleResponse
.Вы даже можете определить фиктивную реализацию , если это необходимо для вашего тестового примера, например:
random-function.js
const aRandomAction = () => ({
type: "RANDOM_ACTION",
});
const aRandomFunction = (data, dispatch) => {
if (data.isTrue) {
dispatch(aRandomAction());
}
}
export default aRandomFunction;
ваш-тест-кейс.spec.js (поместите это вместе с вашим тестовым примером из примера в вопросе)
import aRandomFunction from "./random-function";
jest.mock("./random-function");
aRandomFunction.mockImplementation((data, dispatch) => {
dispatch({ type: "MOCK_ACTION" );
});