Javascript 如何使用';toHaveClass';开玩笑地匹配子字符串?
有一个元素我给它上了一堂课Javascript 如何使用';toHaveClass';开玩笑地匹配子字符串?,javascript,reactjs,jestjs,material-ui,react-testing-library,Javascript,Reactjs,Jestjs,Material Ui,React Testing Library,有一个元素我给它上了一堂课success。但是React Mui在DoM上附加了一个文本,比如说Mui AbcXYZ success。所以当我这么做的时候 expect(getByTestId('thirdCheck')).toHaveClass(“success”) 我没有通过此测试,因为它期望完整的名称mui AbcXYZ success。只有当我提供了确切的名称时,我才能通过这个测试(使用带有连字符的文本和mui添加的随机数) 我如何测试它 我尝试了以下操作,但没有结果: expect(g
success
。但是React Mui在DoM上附加了一个文本,比如说Mui AbcXYZ success
。所以当我这么做的时候
expect(getByTestId('thirdCheck')).toHaveClass(“success”)
我没有通过此测试,因为它期望完整的名称mui AbcXYZ success
。只有当我提供了确切的名称时,我才能通过这个测试(使用带有连字符的文本和mui添加的随机数)
我如何测试它
我尝试了以下操作,但没有结果:
expect(getByTestId('thirdCheck')).toHaveClass(/success/)
我也尝试过应用
.className
或.classList
,但这并没有给出元素上的类列表。在经历了数小时的挫折后,我就是这样做的,如果有更好的解决方案,请随时发布。我会接受的
let classes = getByTestId('thirdCheck').getAttribute('class'); //returns something like "Mui-root mui-AbcXYZ-success"
classes=classes.split(' ')[1].split('-'); //first split is to split on the basis of spaces and the second one to do on the bases of hyphen
expect(classes.includes('success'));
对于一件琐碎的事情来说,看起来有点冗长。但我就是这样做的