单击按钮(jest,酶)后测试导航与MemoryRouter的反应

问题描述 投票:3回答:1

所以,我正在尝试使用MemoryRouter进行测试,如果我单击一个应该带我到新路由的按钮,它确实会打开该路由。

所以'ConversationView'是Conversations中的反应组件。我希望能够测试当我点击位于“对话”内部的按钮时,我将能够到达新路线'ConversationsView'并在其中找到'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);

我究竟做错了什么?我该如何测试这种情况?

附:我正在为对话注入一个MobX商店。但我确实模仿了商店,所以没有额外的异步工作。

reactjs testing jestjs router enzyme
1个回答
0
投票

尝试更改expact()结果:

 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);
© www.soinside.com 2019 - 2024. All rights reserved.