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')
我在 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')