如果您的代码在多个测试中通用,您可以beforeEach
在每个测试运行之前进行一些设置以避免重复。在这种情况下,如果您有多个浅安装的测试Component
,您可以将浅安装移动到一个beforeEach
,并且每次测试运行时都会安装该组件。通常,您会希望将其与afterEach
您调用的wrapper.unmount()
.
describe('tests', () => {
it('does one thing', () => {
const wrapper = shallow(<Component />);
// ...test some things
wrapper.unmount();
});
it('does another thing', () => {
const wrapper = shallow(<Component />);
// ...test something else
wrapper.unmount();
});
it('does a third thing', () => {
const wrapper = shallow(<Component />);
// ...test a third thing
wrapper.unmount();
});
});
变成:
describe('tests', () => {
let wrapper;
beforeEach(() => {
wrapper = shallow(<Component />);
});
afterEach(() => {
wrapper.unmount();
});
it('does something', () => {
// ...test something
});
it('does something else', () => {
// ...test something else
});
it('does another thing', () => {
// ...test a third something
});
});
beforeEach
被称为“设置”阶段,被afterEach
称为“拆卸”阶段。
我们不是故意放慢测试运行时间吗?
不,因为无论如何您都必须在每次测试中浅安装组件。
渲染一次并将其分配给包装器不是可以吗?
在多个测试中保持一个组件(或任何状态)可能会导致不稳定的测试,因为(例如)如果测试以不同的顺序运行,你可能会得到不同的结果。任何状态(例如已安装的组件)都应在每次测试之前设置并在每次测试之后拆除。这使您的测试彼此完全独立。