使用酶测试多个类名

Posted

技术标签:

【中文标题】使用酶测试多个类名【英文标题】:test multiple classname using enzyme 【发布时间】:2021-09-23 14:54:35 【问题描述】:

我想测试类名“.button_next 重音”是否存在。

          <Button
            className=`$this.props.nextAccent && "accent" button_next`
            text=this.props.textNext
            icon="iconnext"
            onClick=this.props.nextButtonClicked
          />

我的测试


  Then(/^Next button contains accent/, function () 
    const wrapper = enzyme.mount(App);
    let nextButton = wrapper.find('.button_next').exists(); //here i want to check both 
                                                              .button_next and accent
    return (expect(nextButton).to.be.equal(true));
    //gave this a try 
    // FAILED: let nextButton = wrapper.find('.button_next .accent').exists();
    // FAILED: let nextButton = wrapper.find('button_next accent').exists();
    // FAILED: let nextButton = wrapper.find('.button_next accent').exists();
    
  ); 

【问题讨论】:

我想你可以试试enzyme.mount(&lt;App /&gt;);。此enzymejs.github.io/enzyme 的文档 【参考方案1】:

多个 CSS 类选择器之间没有空格。

例如

index.jsx:

import React from 'react';

export default class App extends React.Component 
  render() 
    return (
      <div>
        <button className=`$this.props.nextAccent && 'accent' button_next`></button>
      </div>
    );
  

index.test.jsx:

import  mount  from 'enzyme';
import React from 'react';
import App from './';

describe('68381268', () => 
  test('should pass', () => 
    const wrapper = mount(<App nextAccent />);
    let nextButton = wrapper.find('.button_next.accent').exists();
    expect(nextButton).toBeTruthy();
  );
);

测试结果:

 PASS  examples/68381268/index.test.jsx (8.76 s)
  68381268
    ✓ should pass (34 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        9.734 s, estimated 10 s

【讨论】:

完美!工作正常..是的,我怎么忘记css之间没有空格:|

以上是关于使用酶测试多个类名的主要内容,如果未能解决你的问题,请参考以下文章

如果单个元素中有多个类名,如何在 React 测试中获得正确的类名?

在多个页面中搜索类名并使用 javascript 获取该类的 url

如何使用 Selenium 和 Python 定位具有多个类名的元素

具有 CSS 模块和 React 的多个类名

JavaScript 切换DOM元素上的类名(支持多个类名)

如何将文本发送到具有多个类名实例的输入元素