Warning: validateDOMNesting(...): <tbody> cannot appear as a child of <div>.
in tbody (created by TableBody)
in TableBody (created by TableBody)
in TableBody
问题:
如何将我的TableBody
组件呈现为table
元素,而不是使用默认div
元素react-testing-library
?
补充资料:
我尝试将选项传递给react-testing-library
, render()
, 函数,但我似乎无法让它工作。
我还尝试在react-testing-library
测试中四处挖掘以查找示例,但没有找到任何东西。
// react-testing-library
function render(
ui: React.ReactElement<any>,
options?: {
/* You wont often use this, expand below for docs on options */
},
): RenderResult
您通常不需要指定选项,但如果您曾经这样做,这里有可用的选项,您可以将其作为第二个参数提供给渲染。
container:默认情况下,
react-testing-library
将创建一个div
并将其附加div
到document.body
,这是您的反应组件将被渲染的地方。如果您通过此选项提供自己的HTMLElement
容器,它将不会document.body
自动附加到。baseElement:如果
container
指定了 ,则默认为 that,否则默认为document.documentElement
。这用作查询的基本元素以及使用时打印的内容debug()
。
我使用 Jest 的测试代码:
import React from "react";
import { render, cleanup, fireEvent } from "react-testing-library";
import TableBody from "../TableBody";
import listingDataMock from "../__mocks__/TableBody-listing-data";
afterEach(cleanup);
describe("TableBody", () => {
test("Snapshot", () => {
//Arrange--------------
const listingData = listingDataMock;
const tableBodyKey = "candidateId";
const props = {
listingData,
tableBodyKey
};
const { container } = render(<TableBody {...props} />);
//Assert---------------
expect(container).toMatchSnapshot();
});
});