ReactJS & Enzyme:将元素内容匹配到字符串

ReactJS & Enzyme: Matching elements contents to string

我在 React.js 中有一个简单的 Intro 组件,它呈现一个 h1 和一个 p。

我正在尝试使用 Enzyme 为传递的 h1 & p 字符串编写测试,但我无法执行此操作。这段代码有什么问题?

it('description of element is okay <p>', () => {
  const wrapper = shallow(<Intro title="Heading of element" description="Description of element" />);
  expect(wrapper.find('p').text().to.contain("Description of element")); // This is not working!
});

如果我用控制台记录 wrapper.find('p').text() 它不是未定义的......然而控制台是这样说的:

  1) (Component) Intro contains a single <p>:
 TypeError: Cannot read property 'contain' of undefined
  at Context.<anonymous> (test/components/alerts/alert.spec.js:19:12)

最有可能的断言应该是这样的:

expect(wrapper.find('p').text()).to.contain('Description of element')

expect 的工作方式如下:

expect(something).to.do.something

您是在酶包装器上调用 .to.contain,而不是在 expect 对象上调用。所以不是这个:

expect(wrapper.find('p').text().to.contain("Description of element"));

你应该有:

expect(wrapper.find('p').text()).to.contain("Description of element");

新 API 检查字符串内容是

expect(wrapper.find('p').text()).toContain('text to check')

参考请查看jest toContain documentation