Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应测试:是否应该测试文本内容?_Javascript_Reactjs_Tdd_Bdd_React Testing Library - Fatal编程技术网

Javascript 反应测试:是否应该测试文本内容?

Javascript 反应测试:是否应该测试文本内容?,javascript,reactjs,tdd,bdd,react-testing-library,Javascript,Reactjs,Tdd,Bdd,React Testing Library,应该测试元素的文本内容,还是只测试其可见性?我认为这是一个什么是实施细节的问题 例如: it('renders post body', async () => { getPost.resolves(fakePost) const { getByTestId } = render(<Post />) await wait(() => getByTestId('post-body')) expect(getByTestId('post-body

应该测试元素的文本内容,还是只测试其可见性?我认为这是一个什么是实施细节的问题

例如:

it('renders post body', async () => {
    getPost.resolves(fakePost)
    const { getByTestId } = render(<Post />)
    await wait(() => getByTestId('post-body'))
    expect(getByTestId('post-body')).toBeVisible()
    // Should this next line be included?
    expect(getByTestId('post-body')).toHaveTextContent(fakePost.body)
})
it('renders post body',async()=>{
getPost.resolves(fakePost)
const{getByTestId}=render()
等待等待(()=>getByTestId('post-body'))
expect(getByTestId('post-body')).tobevible()
//应该包括下一行吗?
expect(getByTestId('post-body')).toHaveTextContent(fakePost.body)
})
我觉得这是一个关于主体文本如何呈现的实现细节,我应该只关注呈现的内容

例如,接下来我想将正文文本存储为标记,并将其呈现为HTML。为了实现这一点,我必须首先更改测试,因为存储的文本将不再等于DOM中呈现的文本

但是,如果只测试渲染元素的可见性,则不能保证元素实际包含任何内容。我觉得测试应该比那更安全

expect(getByTestId('post-body')).not.toBeEmpty()
,但即使元素只包含另一个没有实际文本内容的元素,这也会过去。

特别是由于,我认为,公平地说,如果你正在测试你的组件或应用程序,就像你在生产中指导一个人测试它一样,那么你做得对

如果您的组件正在接受一个API调用,并将其格式化为标记,那么您应该测试它是否确实正确发生。组件呈现(并在测试中模拟)的方式是测试实现细节的一个示例。测试组件渲染的内容是不正确的


我知道这是一条很好的线,但我认为你应该包括你的最后一行。我还认为,如果您能找到一种查询方法,那就太好了。

您知道,我已经读到,我应该使用测试ID使我的测试能够适应变化。但是,您链接的文档很有意义。我将从现在开始使用这种方法。谢谢。是的,这确实很难——如果你对应用程序的需求变化很快,那么用这种方式做事会惩罚你。内容更改越多,您就越需要更改测试以匹配新的更改。通过testId进行查询当然是一种保持通过测试的好方法,即使对应用程序结构进行了更改,但它的代价是不能完全测试用户看到的实际内容。因此,如果可以使用其他查询之一,那么当有人意外更改时,您可以更快地捕获信息。希望组件或应用程序可以提前完全规划