【发布时间】:2021-01-27 08:47:27
【问题描述】:
我连最简单的react jsonschema form 测试都写不出来。因为对输入元素的更改似乎没有反映在 dom 中。
给定一个像这样的最小形式:
const schema = {
title: "Todo", type: "object",
properties: {
title: { type: "string", title: "Title", default: "A new task" }
}
};
const formData = { title: "First task aaa" };
export class MyForm extends React.Component {
render() { return <Form schema={schema} formData={formData} />; }
}
一个最小的测试看起来像
test("changes input", async () => {
render(<MyForm />);
const input = screen.getByRole("textbox");
expect(input.value).toBe("First task aaa");
await userEvent.type(input, "567890", { delay: 10 });
expect(input.value).toBe("567890");
});
(在Codesandbox完成样本。)
在表单字段中输入文本后,First task aaa 应替换为 567890。不幸的是,它不是。input.value 保留值First task aaa。
我尝试了许多触发事件的变体并等待结果,但输入元素的值始终保持不变。
我在测试<MyForm /> 组件时缺少什么?对我来说似乎很标准。
【问题讨论】:
标签: reactjs unit-testing react-testing-library react-jsonschema-forms user-event