【发布时间】:2021-09-18 17:04:43
【问题描述】:
我正在使用 react,所以在每次测试之前我需要创建一个容器元素。目前,我有这样的事情:
import { screen } from '@testing-library/react';
import { render, unmountComponentAtNode } from 'react-dom';
import Form from './Form';
let container: Element | null = null;
// setup a DOM element as a render target
beforeEach(() => {
container = document.createElement('div');
document.body.appendChild(container);
});
// cleanup on exiting
afterEach(() => {
unmountComponentAtNode(container!);
container?.remove();
container = null;
})
test('renders with a heading', () => {
render(
<Form heading={'Form Heading'} />, container
);
const element = screen.getByText(/form heading/i);
expect(element).toBeInTheDocument();
});
如您所料,我需要为每个测试文件设置beforeEach 和afterEach。可以将其设为全局(全局后,我们仍需要访问container 变量)?期待您的回复!
【问题讨论】:
-
@Elias 是正确的,但是我将无法访问
container变量 -
好吧,这通常是个坏主意,我建议您阅读以下内容:kentcdodds.com/blog/avoid-nesting-when-youre-testing,但同样,在测试之间共享变量非常糟糕。
-
@Elias 我不想共享变量...我希望为每个测试重新定义它。
-
大量练习。测试 UI 真的很难。我自己仍然很挣扎。
标签: javascript reactjs jestjs