Итак, я пытаюсь проверить с помощью ПамятьМаршрутизатор, что если я нажму кнопку, которая должна привести меня к новому Маршрут, он действительно откроет этот маршрут.
Итак, «ConversationView» — это реагирующий компонент внутри Conversations. Я хочу иметь возможность проверить, что, когда я нажимаю кнопку, расположенную внутри «Беседов», я смогу добраться до нового маршрута «Беседы» и найти внутри него тег «h2».
Это мой код:
const wrapper = mount(
<MemoryRouter initialEntries = {[ "/" ]}>
<Conversations.wrappedComponent store = {store}>
<ConversationView>
</ConversationView>
</Conversations.wrappedComponent>
</MemoryRouter>);
const button = wrapper.find("button").first();
button.simulate("click");
expect(wrapper.find("h2")).toHaveLength(1);
Что я делаю неправильно? Как я должен тестировать такой сценарий?
P.S. я внедряю магазин MobX в разговоры. но я издевался над магазином, поэтому дополнительной асинхронной работы нет.
Нет, он просто должен отображать другую страницу.





Попробуйте изменить результат exact():
expect(wrapper.find("h2")).toEqual(1);
Или вы можете попробовать установить setProps в оболочку следующим образом:
const wrapper = mount(
// remove initialEntrie from here
<MemoryRouter>
<Conversations >
<ConversationView>
</ConversationView>
</Conversations>
</MemoryRouter>);
// set props (initialEntries) to the component
wrapper.setProps({ initialEntries: '/' })
const button = wrapper.find("button").first();
button.simulate("click");
expect(wrapper.find("h2")).toHaveLength(1);
Нет, это особо ничего не изменило.
Ваш обработчик
clickвыполняет асинхронную работу?