2016-09-08 3 views
0

Ich habe Komponente, die ich/flat alle Testfälle montieren, und ich finde dies überflüssig. Ist es einmal auf before Haken eine gute Idee? Oder gibt es Probleme, auf die ich später stoßen könnte, insbesondere wenn ich Zustände oder Requisiten für meine Komponente festlegen möchte?Enzym Mount/Shallow einmal auf vor Mokka

Zum Beispiel:

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); 
    }); 
    }); 
}); 

Antwort

2

Wenn Sie nicht Schedule App mit verschiedenen Requisiten zu testen gehen, brauchen Sie es nicht für jeden Fall zu montieren.

Sie müssen auch keine untergeordneten Komponenten (ScheduleForm und ScheduleTable) importieren, damit das Enzym sie finden kann. Enzyme finds child components by their display name.

Sie können den Code über Refactoring als

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); 
    }); 
    }); 
}); 
+0

Genau das, was ich dachte. Danke für die Tipps! – JohnnyQ

+0

Übrigens, wenn wir den 'Vorher'-Haken loswerden können, indem wir es so machen, wie Sie es getan haben, was sind dann die anderen Anwendungsfälle für' vorher' mit 'ReactJS'? – JohnnyQ

+1

Ich habe nicht wirklich Haken wie vorher verwendet, vor jedem und nach jedem Test beim Reagieren von Komponenten. Diese Hooks sind jedoch nützlich, wenn Sie Mocking-Bibliotheken wie [fetch-mock] (https://github.com/wheresrhys/fetch-mock) verwenden. [Hier ein Beispiel] (https://github.com/LaborWorks/bilgi-shuttle-web/blob/master/app/redux/modules/nodes/index.test.ts#L65-L67) – zebrasinpyjamas