代码之家  ›  专栏  ›  技术社区  ›  Robert

如何检查具有特定类的元素?

  •  1
  • Robert  · 技术社区  · 7 年前

    我的测试代码

    <div className="foo">
        {this.props.foo ? "foo!" : ""}
    </div>
    

    我想像这样测试它:

    it('shows no foo by default', () => {
        const wrapper = mount(
            <MyComponent/>
        );
        expect(wrapper).to.containMatchingElement(
            <div class="foo"/>
        );
    });
    

    但是,它从未找到元素,并且测试失败,即使输出显示我的元素:

    断言错误:应为 <MyComponent /> 包含匹配 <div class="foo" />

        HTML:
        ...
        <div>
          <div class="foo"></div>
        </div>
    

    我如何断言 <div> 给定的类在输出中?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Shubham Agarwal Bhewanewala    7 年前
    it('shows no foo by default', () => {
        const wrapper = shallow(
            <MyComponent />
        );
        expect(wrapper.find(".foo")).doTestHere(
            <div class="foo"/>
        );
    });
    

    试试这个。

    你想尝试的方式应该是这样的

    expect(wrapper.containsMatchingElement(<div class="foo"></div>)).to.equal(true);
    

    你写了不完整的测试

        2
  •  0
  •   n8o    7 年前

    containsMatchingElement 是一种酶的方法,但是 expect 是柴的一种方法。

    因此,这两种方法是不兼容的:

    expect(wrapper).to.containsMatchingElement(<div class="foo"></div>); // incompatible!
    

    你应该这样使用这些方法:

    expect(wrapper.containsMatchingElement(<div class="foo"></div>)).to.be.true; // good