【发布时间】:2019-07-28 15:23:36
【问题描述】:
应该测试元素的文本内容,还是只测试其可见性?我认为这是一个关于什么是实现细节的问题。
例子:
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)
})
我觉得这是一个关于如何呈现正文文本的实现细节,我应该只关心呈现了一些东西。
例如,接下来我想将正文文本存储为 markdown 并将其呈现为 HTML。要实现这一点,我必须先更改测试,因为存储的文本将不再等于 DOM 中呈现的内容。
然而,如果只测试渲染元素的可见性,并不能保证元素实际上包含任何东西。我觉得测试应该比那更安全。
expect(getByTestId('post-body')).not.toBeEmpty() 出现在 jest-dom api 中,但即使该元素仅包含另一个没有实际文本内容的元素,也会通过。
【问题讨论】:
标签: javascript reactjs tdd bdd react-testing-library