我正在为我的 React 项目编写测试代码。我要检查的是“如果输入类型是数字,则不允许插入文本”。下面是我写的测试代码。
it("disallow a text input", () => {
const input = screen.getByLabelText(label0); // it has 0 as initial value
const dummyText = "imyourfather";
// typing a text won't change the value of input
userEvent.type(input, dummyText);
screen.debug();
expect(input).toHaveValue(0); // FAILED -> return null
});
我在这里所期望的是获得初始值0
,作为 的结果toHaveValue
。但它实际上返回null
。
你可能会想'是的,你试图在数字类型的输入中插入一个文本,这就是它返回 null 的原因',但有趣的是它debug()
并按我的预期console.log(input.value)
返回。0
<!-- the result of debug() -->
<div
class="ui input"
>
<input
id="form-field-number01"
required=""
type="number"
value="0"
/>
</div>
而且,如果您手动尝试将文本值插入浏览器上的数字输入,它实际上会显示初始值 0。任何人都知道为什么toHaveValue
并debug
显示不同的结果?