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();
});
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();
});