我有每个测试用例挂载/浅的组件,我觉得这个多余。在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);
});
});
});
答案 0 :(得分:2)
如果您不打算使用不同的道具测试安排应用,则不需要为每种情况安装它。
您也不需要导入子组件(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);
});
});
});