我刚开始学习Jest和Snapshot测试,我想知道为什么所有的例子都要对React组件进行“深层渲染”以创建快照。
示例
const A = () => {
return <div><B /><B /></div>
}
const B = () => {
return <div>This is B</div>
}
// TEST
describe('Test', () => {
it('renders correctly', () => {
const tree = ReactTestRenderer.create(
<A />
).toJSON();
expect(tree).toMatchSnapshot();
});
});
快照:
exports[`Summary DOM rendering renders correctly 1`] = `
<div>
<div>
This is B
</div>
<div>
This is B
</div>
</div>
`;
虽然有时候这很有用,但我认为为A和B分别建立不同的测试/快照,并进行浅渲染更有意义,这样如果我改变B,我的A快照就不需要更新。因此,我希望我的快照看起来像这样:
exports[`Summary DOM rendering renders correctly 1`] = `
<div>
<B />
<B />
</div>
`;
有没有办法做到这一点?这是首先一个好主意吗?如果可能的话,为什么浅层渲染不是文档中首选的方法?
react-test-renderer
是一个将组件直接渲染为JSON的渲染器。react-addons-test-utils
是一组实用工具,帮助创建React测试。它们都是独立的包:它们由React团队创建,但不随React或Jest一起提供。我会更新我的答案。 - Lucasreact-test-renderer/shallow
,请按照此处所示的方式使用 https://facebook.github.io/react/docs/shallow-renderer.html。 - Levsero