【发布时间】:2019-11-27 14:19:06
【问题描述】:
我有一些正在进行的测试,这是按预期工作的:
describe('Parent', () => {
afterEach(() => {
cleanup();
jest.resetModules();
});
describe('Test 1', () => {
const wrapper = render(
<MockProvider>
<MyComponent />
</MockProvider>,
);
test('1 ', () => {
expect(wrapper.baseElement).toMatchSnapshot();
expect(wrapper.getByText('Apply').disabled).toBe(true);
});
});
describe('Test 2', () => {
test('1 ', () => {
const wrapper = render(
<MockProvider>
<MyComponent />
</MockProvider>,
);
console.log(wrapper.getByText('Apply').disabled);
expect(1).toBe(1);
});
});
});
但是,当我将第二个渲染函数移出测试时,它会出错:
describe('Parent', () => {
afterEach(() => {
cleanup();
jest.resetModules();
});
describe('Test 1', () => {
const wrapper = render(
<MockProvider>
<MyComponent />
</MockProvider>,
);
test('1 ', () => {
expect(wrapper.baseElement).toMatchSnapshot();
expect(wrapper.getByText('Apply').disabled).toBe(true);
});
});
describe('Test 2', () => {
const wrapper = render(
<MockProvider>
<MyComponent />
</MockProvider>,
);
test('1 ', () => {
console.log(wrapper.getByText('Apply').disabled);
expect(1).toBe(1);
});
});
});
我得到的错误是
找到多个带有文本的元素:应用
我可以在控制台中看到组件被渲染了两次,所以我认为清理功能在描述块方面一定不能正常工作。这很奇怪,因为我们已经进行了 Enzyme 测试,并且设置和拆卸对这些都很好。
【问题讨论】:
-
你为什么要这样渲染?
-
在我看来,describe 块会设置 case,然后 test 会有断言。
-
我不确定它是否有效。我认为每个渲染都必须是独立的,你不能重复使用它们
标签: jestjs react-testing-library