gpt4 book ai didi

unit-testing - 浅层渲染 Jest 快照

转载 作者:行者123 更新时间:2023-12-03 13:17:12 24 4
gpt4 key购买 nike

我刚刚开始进行 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>
`;

有什么办法可以做到这一点吗?首先这是一个好主意吗?如果可能的话,为什么浅渲染不是文档中的首选方式?

最佳答案

更新(2018 年 1 月 3 日)

Shallowrender 已移至 react-test-renderer

import ShallowRenderer from 'react-test-renderer/shallow'

it('Matches snapshot', () => {
const renderer = new ShallowRenderer()
const result = renderer.render(<A />)
expect(result).toMatchSnapshot()
})
<小时/>

您可以使用react-test-utils Shallow Rendering以及快照测试:

import ReactTestUtils from 'react-addons-test-utils';

describe('Test', () => {

it('renders correctly', () => {
const renderer = ReactTestUtils.createRenderer();
expect(renderer.render(<A />)).toMatchSnapshot();
});
});

使用它,您可以创建仅渲染 1 级深度的渲染器,即:它只会渲染组件的 render() 函数中的内容,而不渲染子组件。

react-test-renderer 是一个不同的渲染器,它将您的组件(和整个树)渲染为 JSON。目前它没有浅渲染选项,它将像在浏览器中一样工作并渲染所有内容,但渲染为 JSON。

它们都适合测试,因为它们不需要 DOM 环境,并且具有不同的特性。您可以选择更适合您的用例的一种。

关于unit-testing - 浅层渲染 Jest 快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42348397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com