我什至无法为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 />
组件?对我来说似乎很标准。