当我测试一个反应组件时,什么是最佳实践?我应该测试什么?在正常测试中,我通常只是测试正确的状态+输入是否导致正确的状态+输出
但是React组件有些不同。他们有state + props + userInput导致state + markup。
这可能导致很多不同的潜在情况。我是否需要测试所有这些方案的结果状态?标记可能很大。我应该测试整个标记树是否符合预期吗?还是只是其中一部分?如何确定要测试的标记的哪一部分?
首先要记住的事情是:
关于组件,请始终进行以下测试:
如果您不确定要使用哪个库来测试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);
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句