【发布时间】:2022-02-14 09:24:23
【问题描述】:
我有如下代码测试Select元素改变后的值:
it("changes value after selecting another field", () => {
doSetupWork();
let field = screen.getByLabelText("MySelectField");
expect(field).toHaveValue("");
fireEvent.change(field, { target: { value: "1" } });
// Insert one of two options from below
});
但是,当我在底部插入以下内容时,它不起作用:
field = screen.getByLabelText("MySelectField");
expect(field).toHaveValue("1");
并给出以下错误信息:
Expected the element to have value: 1
Received:
但是,当我将它包装在 setTimeout 中,延迟只有 1 毫秒时,它确实有效:
setTimeout(() => {
field = screen.getByLabelText("MySelectField");
expect(field).toHaveValue("1");
}, 1);
感觉在没有setTimeout 的情况下应该有一种更优雅的写法。有什么建议吗?
【问题讨论】:
标签: javascript reactjs typescript jestjs