This rule disallows the usage of render (or a custom render function) in testing framework setup functions (beforeEach and beforeAll) in favor of moving render closer to test assertions.
쉽게 말해서 render()를 시키는 것은 expect와 같이 assertions가 발생하는 문의 가장 가까이까지 이동하는 것이 선호되기 때문에 beforeEach에서 선언하는 것을 금지한다는 것이다.
예시를 보면 이해가 쉽다.
beforeAll(() => {
render(<MyComponent />);
});
it('Should have foo', () => {
expect(screen.getByText('foo')).toBeInTheDocument();
});
it('Should have bar', () => {
expect(screen.getByText('bar')).toBeInTheDocument();
});
TypeScript
복사
올바른 코드
it('Should have foo and bar', () => {
render(<MyComponent />);
expect(screen.getByText('foo')).toBeInTheDocument();
expect(screen.getByText('bar')).toBeInTheDocument();
});
// =========================================================
const setup = () => render(<MyComponent />);
beforeEach(() => {
// other stuff...
});
it('Should have foo and bar', () => {
setup();
expect(screen.getByText('foo')).toBeInTheDocument();
expect(screen.getByText('bar')).toBeInTheDocument();
});
TypeScript
복사