createRoot(...): 目标容器不是 React 测试文件中的 DOM 元素
createRoot(...): Target container is not a DOM element in React Test file
我在我的项目中使用 React-18.0.0,在测试文件中出现以下错误
createRoot(...): Target container is not a DOM element.
我的测试文件是:
import ReactDOM from 'react-dom/client';
import { render, screen } from "@testing-library/react";
import App from "./App";
const root = ReactDOM.createRoot(document.getElementById("root"));
test("renders learn react link", () => {
root.render(<App />);
const linkElement = screen.getByText(/Hello React/i);
expect(linkElement).toBeInTheDocument();
});
你的 test
使用 root.render(<App />)
而 React 的 testing-library
提供了自己的 render
函数在 test
中使用
不需要检索 root
,它会导致您显示的错误。
因此,应用以下更改:
// Remove
root.render(<App />);
// Replace with
render(<App />); // Imported from @testing-library/react
工作示例App.test.js
:
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders learn react link', () => {
render(<App />);
const linkElement = screen.getByText(/this should exist/i);
expect(linkElement).toBeInTheDocument();
});
我在我的项目中使用 React-18.0.0,在测试文件中出现以下错误
createRoot(...): Target container is not a DOM element.
我的测试文件是:
import ReactDOM from 'react-dom/client';
import { render, screen } from "@testing-library/react";
import App from "./App";
const root = ReactDOM.createRoot(document.getElementById("root"));
test("renders learn react link", () => {
root.render(<App />);
const linkElement = screen.getByText(/Hello React/i);
expect(linkElement).toBeInTheDocument();
});
你的 test
使用 root.render(<App />)
而 React 的 testing-library
提供了自己的 render
函数在 test
不需要检索 root
,它会导致您显示的错误。
因此,应用以下更改:
// Remove
root.render(<App />);
// Replace with
render(<App />); // Imported from @testing-library/react
工作示例App.test.js
:
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders learn react link', () => {
render(<App />);
const linkElement = screen.getByText(/this should exist/i);
expect(linkElement).toBeInTheDocument();
});