createRoot(...): 目标容器不是 React 测试文件中的 DOM 元素

KAR*_*N.A 5 javascript reactjs react-test-renderer react-testing-library react-18

我在我的项目中使用 React-18.0.0,在测试文件中我收到以下错误

createRoot(...):目标容器不是 DOM 元素。

我的测试文件是:

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();
});
Run Code Online (Sandbox Code Playgroud)

0st*_*ne0 2

你的test使用root.render(<App />),而 Reacttesting-library提供了自己的render函数来在 a 中使用test

root不需要检索,并且会导致您显示的错误。

因此,应用以下更改:

// Remove
root.render(<App />);

// Replace with
render(<App />);  // Imported from @testing-library/react
Run Code Online (Sandbox Code Playgroud)

工作示例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();
});
Run Code Online (Sandbox Code Playgroud)