如何在反应测试库中将参数传递给 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 电影?