【问题标题】:How do I test the values of a select statement in react testing library如何在反应测试库中测试 select 语句的值
【发布时间】:2021-05-19 15:04:08
【问题描述】:

我有一个组件,它根据其角色从名称数组中获取主要名称,然后将它们创建为 select 语句中的选项。该字段是必需的,我想测试该字段中的值。

我正在使用反应测试库来执行此操作,但是我对这些东西是新手。在下面查看我的代码,基本上我想知道如何从 select 语句中获取一个值来断言它。教人如何钓鱼的人的奖励积分,你们如何检查当前测试中的值,是否有控制台记录使用 get 命令的元素的方法?

这是我的测试代码:

这是组件的代码:

选项只是人名的随机值,一旦创建该函数,将不会有默认的空白选项,它会自动选择第一个值

【问题讨论】:

  • 请将您的代码提供为 sn-p 而不是图像,以便人们更容易地帮助您。

标签: reactjs react-testing-library react-typescript


【解决方案1】:

我认为这是一个非常具体的案例,我们无法在代码盒中重现,因为我们没有您的组件和逻辑。

但是,有一些问题浮现在脑海中,可能会对您有所帮助。

我看到您在输入中触发了一个更改事件,然后是模糊,然后是点击。您可能可以使用user-event 库并使用userEvent.type 和userEvent.click 来模拟用户行为。这可以帮助您消除这种模糊,并且您的测试会更加清晰。

await getBy... 查询没有意义,因为 getBy 是一个同步查询,您只需将 await 与 findBy 查询一起使用。

我不明白测试应该测试什么。查询 innerHTML 中的文本可以通过不同的方式完成,通过使用 expect(x).toHaveTextContent('myText') 或者如果您想在另一个元素中查询,您可以使用 within,执行以下操作:within(getByLabelText('Main Contact')).getByText('hello')。

within 函数在测试下拉列表中的值时非常有用,因此您无需查询整个屏幕,而是仅查询特定元素。

【讨论】:

  • 我只是想获取选择值,尝试了很多方法来提取值,这就是我停下来的地方。我很新,从你的输入中学到了很多东西,findBy 可能是它没有抓取数据的原因,以及点击事件。如果我在下拉菜单上执行点击事件,我将如何选择选项?说“Pallavi Kiran”是其中一个值,我如何模拟在输入中选择它?
  • 用户如何选择该输入?点击一下?如果是这样,只需找到该选项的选择器并单击它。 userEvent.click(screen.getByText('myOption'))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
  • 2015-01-06
  • 2020-07-19
  • 2021-10-02
相关资源
最近更新 更多