如何在反应测试库中将参数传递给 getByText?

Posted

技术标签:

【中文标题】如何在反应测试库中将参数传递给 getByText?【英文标题】:How to pass a an argument to getByText in react Testing Library? 【发布时间】:2020-03-06 16:17:42 【问题描述】:

目前我正在这样做

getByText(/SomText/i);

但我想创建一个函数并将一些文本作为参数传递。我试过这样做

let x = "/SomeText/i";
getByText(x);

getByText(`/$x/i`);

但没有一个选项有效。

【问题讨论】:

【参考方案1】:

我认为您的问题是您试图将 RegEx 设置为字符串

// Doesn't need quotes
let x = /SomeText/i

getByText(x)

您要求getByText 查找的内容实际上是/SomeText/i,我想您的文档中没有它

【讨论】:

【参考方案2】:

如果你有

const x = "Some string"

使用正则表达式测试x

getByText(new RegExp(x, "i"))

【讨论】:

【参考方案3】:

也许您正在寻找传递exact: false

// Match a substring of Hello World
getByText(container, 'llo Worl',  exact: false ) // substring match

您也可以传递自己匹配的自定义函数。

getByText(container, (content, element) => content.startsWith('Hello'))

https://testing-library.com/docs/dom-testing-library/cheatsheet#text-match-options

【讨论】:

【参考方案4】:

欢迎来到 SO!

我还没有测试过,但似乎 getByText 需要一个正则表达式:

getByText(/SomText/i);

作为一个参数,而不是你在这里所说的字符串:

let x = "/SomeText/i";

如果您像这样从字符串创建正则表达式,您的代码是否有效?

let x = new RegExp("/SomeText/i");

【讨论】:

感谢您的帮助。但解决方案不起作用。我在控制台上收到以下错误。找不到包含以下文本的元素:/\/SomeText\/i/.

以上是关于如何在反应测试库中将参数传递给 getByText?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Delphi 2010 中将参数传递给 flash 电影?

如何在django中将多个参数传递给url

如何在 Flutter 中将参数传递给动作

如何在谷歌云构建中将参数传递给 docker run

在 Eclipse(Pydev) 中将命令行参数传递给 Python 脚本

如何在firebase函数中将参数传递给cors