Я проверяю, правильно ли OuterComponent
ведет себя, когда его InnerComponent
вызывает некоторые вызовы функций. Упрощенный пример:
// js/OuterComponent.js
onInput() {
// Behaviour to test
}
render() {
return (
<div>
<InnerComponent onInput={() => this.onInput()} />
</div>
);
}
Поскольку для того, чтобы InnerComponent
наконец вызвал this.props.onInput()
, должна произойти довольно сложная цепочка событий, я бы хотел высмеять InnerComponent
в своих тестах. Я пытаюсь сделать следующее:
// tests/OuterComponent.test.js
jest.useFakeTimers();
describe("OuterComponent", () => {
test("behaves correctly when receiving input", () => {
jest.mock("../js/InnerComponent")
const wrapper = shallow(<OuterComponent />);
jest.runAllTimers();
// expectations about OuterComponent after `onInput` has been called
});
});
Макет:
// js/__mocks__/InnerComponent.js
export default class SVGSymbolDrawing extends React.Component {
componentDidMount() {
setTimeout(() => {
this.props.onInput();
}, 100);
}
render() {
return <div/>;
}
}
Мои expect
все терпят неудачу, хотя. Я не вижу никаких console.logs из макета InnerComponent, но я не уверен, как проверить, что он на самом деле использует макет, а не реальный внутренний компонент.