Jest.js 如何在react测试库中向getByText传递参数?

weylhg0b  于 2023-09-28  发布在  Jest
关注(0)|答案(5)|浏览(125)

目前我正在做这个

getByText(/SomeText/i);

但是我想创建一个函数,并通过先将文本存储在变量中来传递一些文本作为参数。我试着这样做:

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

getByText(`/${x}/i`);

但这些选择都不管用。

ee7vknir

ee7vknir1#

如果你有

const x = "Some string"

要使用正则表达式测试x

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

lyfkaqu12#

您正在寻找的页面不存在。

// 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

hts6caw3

hts6caw33#

欢迎来到SO!
我还没有测试过这个,但是看起来getByText需要一个正则表达式:

getByText(/SomeText/i);

作为参数,而不是像这里所说的字符串:

let x = "/SomeText/i";

如果你从字符串中创建一个正则表达式,你的代码能工作吗?

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

hgc7kmma4#

我认为你的问题是你试图设置一个RegEx,就好像它是一个字符串

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

getByText(x)

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

f1tvaqid

f1tvaqid5#

我有一个类似的场景,我需要一个变量:

const x = 'some text';
    getByText(`${x}`);

相关问题