2016-09-08 129 views
0

我有裝載/淺淺的每個測試用例的組件,我覺得這是多餘的。在掛上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); 
    }); 
    }); 
}); 

回答

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

剛纔我還以爲代碼。感謝您的提示! – JohnnyQ

+0

順便說一句,如果我們可以通過這樣做來擺脫'before'鉤子,那麼''之前'帶'ReactJS'的其他用例是什麼? – JohnnyQ

+1

在測試React組件時,我還沒有真正使用過像之前,beforeEach和afterEach之類的鉤子。 但是,使用模擬庫[fetch-mock](https://github.com/wheresrhys/fetch-mock)時,這些鉤子很有用。 [這是一個例子](https://github.com/LaborWorks/bilgi-shuttle-web/blob/master/app/redux/modules/nodes/index.test.ts#L65-L67) – zebrasinpyjamas