当我测试反应组件时,最佳实践是什么以及我应该测试哪些内容?在正常测试中,我通常只测试正确的状态+输入是否导致正确的状态+输出
但是React组件有点不同。他们有state + props + userInput,导致state + markup。
这可能导致许多不同的潜在情景。我是否需要测试所有这些场景的结果状态? 标记可能很大。我应该测试整个标记树是否符合预期?或者只是其一部分?如何确定要测试的标记的哪个部分?
答案 0 :(得分:2)
首先要记住的显而易见的事情是:
关于组件,请始终测试:
如果您不确定用于测试React组件的库,我强烈建议Enzyme。
GitHub页面中的示例:
describe('<MyComponent />', () => {
it('renders three <Foo /> components', () => {
const wrapper = shallow(<MyComponent />);
expect(wrapper.find(Foo)).to.have.length(3);
});
it('renders an `.icon-star`', () => {
const wrapper = shallow(<MyComponent />);
expect(wrapper.find('.icon-star')).to.have.length(1);
});
it('renders children when passed in', () => {
const wrapper = shallow(
<MyComponent>
<div className="unique" />
</MyComponent>
);
expect(wrapper.contains(<div className="unique" />)).to.equal(true);
});
it('simulates click events', () => {
const onButtonClick = sinon.spy();
const wrapper = shallow(
<Foo onButtonClick={onButtonClick} />
);
wrapper.find('button').simulate('click');
expect(onButtonClick).to.have.property('callCount', 1);
});
});