使用Enzyme测试使用apollo-link-state的组件

时间:2018-04-19 13:39:27

标签: reactjs jestjs enzyme react-apollo apollo-client

我有一个组件可以在我的应用程序中切换语言。如果当前语言为" en"它显示了一个文本链接" Francais"如果当前的语言是" fr"它会显示一个带有文本的链接"英语"。

点击后,它会切换" en"之间的语言。和" fr"。我正在尝试为这种行为写一个测试。

当前语言使用apollo-link-state存储在Apollo客户端缓存中。

我写了下面的测试,我认为应该通过,但不会。

describe('when clicked', async () => {
  it('changes the language displayed to English', async () => {
    const englishClient = testClient({ language: 'en' })
    const wrapper = mount(
      <ApolloProvider client={englishClient}>
        <LanguageSwitcher />
      </ApolloProvider>,
    )
    wrapper.find('a').simulate('click')
    wrapper.update()

    expect(wrapper.text()).toMatch(/English/)
  })
})

我想了解为什么这个测试失败了,以及如何让它通过。

如果有更好的方法/最佳实践来测试这类事情,我很乐意知道。

您可以在代码框中查看代码并运行测试:https://codesandbox.io/s/kmnwy1z8v

0 个答案:

没有答案