我有一个组件,我在每个测试用例中都进行了挂载/精简,因此发现这很多余。将它一次安装在before挂钩上是个好主意吗?还是在以后会遇到一些问题,特别是如果要在组件上设置状态或道具时?

例如:

import React from 'react';
import {mount,shallow} from 'enzyme';
import {expect} from 'chai';
import ScheduleApp from '../src/components/schedule-app.jsx';
import ScheduleForm from '../src/components/schedule-form.jsx';
import ScheduleTable from '../src/components/schedule-result-table.jsx';

describe('<ScheduleApp/>', function() {
  describe('Initial Mount', function() {
    let wrapper;

    before(function() {
      wrapper = mount(<ScheduleApp />);
    });

    it('contains 1 <ScheduleForm/> component', function() {
      expect(wrapper.find(ScheduleForm)).to.have.length(1);
    });

    it('contains 1 <ScheduleTable/> component', function() {
      expect(wrapper.find(ScheduleTable)).to.have.length(1);
    });
  });
});

最佳答案

如果您不打算使用其他道具测试Schedule App,则无需为每种情况都安装它。

您也不需要导入子组件(ScheduleForm和ScheduleTable)即可告诉酶找到它们。 Enzyme finds child components by their display name

您可以将上面的代码重构为

import React from 'react';
import { mount } from 'enzyme';
import { expect } from 'chai';
import ScheduleApp from '../src/components/schedule-app.jsx';

describe('<ScheduleApp/>', function() {
  describe('Initial Mount', function() {
    const wrapper = mount(<ScheduleApp />);

    it('contains 1 <ScheduleForm /> component', function() {
      expect(wrapper.find('ScheduleForm')).to.have.length(1);
    });

    it('contains 1 <ScheduleTable /> component', function() {
      expect(wrapper.find('ScheduleTable')).to.have.length(1);
    });
  });
});

关于javascript - enzyme 固定/浅一次卡在 Mocha 上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39391235/

10-12 12:25
查看更多