React 测试库与 JsDom

React Testing Library vs JsDom

我目前正在编写一个检查简单输入组件的测试:

it("Renders TextInput Component with correct display value", ()=>{
  const textInput = screen.getByRole("textbox");
})

如果我想检查文本输入的值,我应该检查属性还是使用 RTL 的屏幕方法(有更好的方法吗?

  expect(screen.getByDisplayValue(defaultProps.value));
  expect(textInput).toHaveAttribute('name', defaultProps.name);

我想开始使用更多的 RTL,但我发现我传递的一些属性更难检查,如下所示。

expect(textInput).toHaveAttribute('placeholder', defaultProps.label);
expect(textInput).toHaveAttribute('type',  defaultProps.type);

是的,screen 无疑是首选方式。阅读 this 文章了解更多信息和更多提示。

关于您关于如何检查输入字段的值的问题,您可以这样做:

it("Renders TextInput Component with correct display value", ()=>{
  expect(screen.getByDisplayValue('my text')).toBeInTheDocument().
})

这将尝试查找值为“我的文本”的输入,就像真实用户一样。如果确实找到了,则视为通过。