React 测试库 getByLabelText - 带有特殊字符的标签

React testing library getByLabelText -Label with special characters

it('render the field with label having the special characters', () => {
  expect(screen.getByTestId('foo')).toHaveTextContent('About(En)'); // works
  expect(screen.getByLabelText(/About(En)/u)).toBeInTheDocument(); // not working
}); 

第一个期望为真,但第二个给出错误

 Error: Unable to find a label with the text of: /About(En)/u

我想使用 getByLabelText 而不是 getByTestId,因为 getByTestId 需要在每个字段上添加属性。

您要么必须使用引号而不是正则表达式,要么必须转义正则表达式中的括号。

我创建了一个非常简单的 react-app 来展示它的工作原理。 检查 App.js/App.test.js

您可以下载并运行代码: https://github.com/lviviani/so-69195225-poc

例如:

it('render the field with label having the special characters', () => {
  render(<App />);
  expect(screen.getByTestId('foo')).toHaveTextContent('About(En)'); // works
  expect(screen.getByLabelText('About(En)')).toBeInTheDocument();
  expect(screen.getByLabelText(/about\(en\)/i)).toBeInTheDocument();
});