如何测试元素(标签)是否用玩笑/酶呈现?

ric*_*ck1 2 javascript reactjs jestjs enzyme

我无法理解如何正确渲染元素中的测试。我写了这样一个测试:

const props = {
  type: 'test_plan',
  renewal: '25.06.2019',
  subscriptionName: 'Test',
};
test('test component elements render', () => {

     const wrapper = mount(<Component {...props} />);
     console.log(wrapper.debug())
     expect(wrapper.find('.link')).to.have.lengthOf(0);
     expect(wrapper.find('type')).to.have.lengthOf(1);

    });
Run Code Online (Sandbox Code Playgroud)

这是调试组件时我在控制台中的内容:

<div className="wrapper">
        <div className="mobile">
          <h3>
            Test
          </h3>
        </div>
        <div className="inner">
          <h3>
            Test
          </h3>
          <div className="type">
            <h4>
              Test Type 1
            </h4>
            <span>

              25.06.2019
            </span>
          </div>
        </div>
      </div>
Run Code Online (Sandbox Code Playgroud)

这是我的错误 Cannot read property 'have' of undefined

如何正确测试组件中的元素是否呈现?

Bri*_*ams 5

.to.have.lengthOf来自Chai断言

因此,您可以要求expectfromChai并使用Chai断言:

import * as React from 'react';
import { mount } from 'enzyme';

const expect = require('chai').expect;  // <= use expect from Chai

const Component = () => (<div><div className="type"></div></div>);

test('test component elements render', () => {
  const wrapper = mount(<Component />);
  expect(wrapper.find('.link')).to.have.lengthOf(0);  // Success!
  expect(wrapper.find('.type')).to.have.lengthOf(1);  // Success!
});
Run Code Online (Sandbox Code Playgroud)

...或者您可以使用.toHaveLength包含在中的断言Jest

import * as React from 'react';
import { mount } from 'enzyme';

const Component = () => (<div><div className="type"></div></div>);

test('test component elements render', () => {
  const wrapper = mount(<Component />);
  expect(wrapper.find('.link')).toHaveLength(0);  // Success!
  expect(wrapper.find('.type')).toHaveLength(1);  // Success!
});
Run Code Online (Sandbox Code Playgroud)