编程语言
首页 > 编程语言> > javascript-如何使用Jest和React测试库测试className

javascript-如何使用Jest和React测试库测试className

作者:互联网

我是JavaScript测试的新手,并且在新的代码库中工作.我想编写一个在元素上检查className的测试.我正在与Jest和React-Testing-Library合作.下面,我有一个测试,它将根据变体道具渲染一个按钮.它还包含一个className和.我想测试一下.

it('Renders with a className equal to the variant', () => {
    const { container } = render(<Button variant="default" />)
    expect(container.firstChild) // Check for className here
})

我试图在Google上搜索具有hasClass的Enzyme之类的属性,但是找不到任何东西.有谁知道如何使用当前库(react-testing-library,Jest)解决此问题?

解决方法:

您可以使用react-testing-library轻松地做到这一点.

首先,您必须了解容器或getByText等的结果仅仅是DOM节点.您可以像在浏览器中一样与它们进行交互.

因此,如果您想知道将什么类应用于container.firstChild,则可以像container.firstChild.className这样来进行操作.

如果您在MDN中阅读了有关className的更多信息,您会看到它返回应用于您的元素的所有类,并用空格分隔,即:

<div class="foo">     => className === 'foo'
<div class="foo bar"> => className === 'foo bar'

根据您的情况,这可能不是最佳解决方案.不用担心,您可以使用其他浏览器API,例如classList.

expect(container.firstChild.classList.contains('foo')).toBe(true)

而已!无需学习仅适用于测试的新API.就像在浏览器中一样.

如果您经常检查某个类,可以通过在项目中添加jest-dom来简化测试.

然后测试变为:

expect(container.firstChild).toHaveClass('foo')

还有许多其他方便的方法,例如toHaveStyle可以帮助您.

附带说明一下,react-testing-library是一个正确的JavaScript测试实用程序.与其他库相比,它具有许多优势.如果您不熟悉JavaScript测试,建议您加入spectrum forum.

标签:javascript,reactjs,jestjs,react-testing-library
来源: https://codeday.me/bug/20191010/1887336.html