如何使用反应测试库获取带有testid的span元素的值?

How to get the value of the span element with testid using react testing library?

我想使用 react 测试库获取 span 元素的值。

我想做什么?

我有一个如下所示的 span 元素显示一些值

render = () => {
    const count = 2;
    return (
        <span data-test-id="test-span">
            {count}
        </span>
     )
 }

现在在我的测试中,我访问了如下元素,

const span_element = getByTestId('test-span');

但我不确定如何检索它的值。

我尝试使用 span_element.value 但说“属性 值在 HTMLElement 上不存在”

我该如何解决这个问题。有人可以帮我解决这个问题吗?谢谢。

你需要的是DOM元素的文本内容:

const spanTextContent: string = getByTestId('test-span').textContent;

参见:https://developer.mozilla.org/en/docs/Web/API/Node/textContent

value 通常指的是 input 等交互元素的 value 属性,你可以这样检索它:

const inputValue: string = getByTestId('refers-to-input').getAttribute('value');

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input/number#value

https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute

你可以试试这个方法:

Component.js

...
render = () => {
    const count = 2;
    return (
        <span id="test-span">
            {count}
        </span>
     )
 }
...

Component.test.js

import { screen } from "@testing-library/react";
...
// get HTML DOM element
const spanElement = await screen.queryByTestId('test-span');
// OR
// const spanElement = await screen.querySelector('test-span');

// get value from HTML DOM element
const spanElementValue = spanElement.getAttribute('value');
...