酶开关盒有反应

时间:2017-11-21 15:57:44

标签: reactjs unit-testing ecmascript-6 mocha enzyme

我有一个依赖于参数返回组件的函数或null。我创建了一个对象数组,其中包含应返回的参数和组件。如何用switch / case语句检查我返回的内容。

export const getMiConfiguration = miConfigurationType => {
    switch (miConfigurationType) {
        case MiConfigurationTypes.WanderingDetection :
        case MiConfigurationTypes.MuteWanderingDetection:
            return <WanderingDetection />

        case MiConfigurationTypes.OpenWanderingControl :
        case MiConfigurationTypes.LockedWanderingControl:
            return <WanderingControl />

        default:
            return null
    }
} 

测试

describe.only('getMiConfiguration', () => {

    ;[{id: MiConfigurationTypes.AccessPointOnly, component: null},
        {id: MiConfigurationTypes.WanderingDetection, component: <WanderingDetection/>},
        {id: MiConfigurationTypes.MuteWanderingDetection, component: <WanderingDetection/>},
        {id: MiConfigurationTypes.LockedWanderingControl, component: <WanderingControl/>},
        {id: MiConfigurationTypes.OpenWanderingControl, component: <WanderingControl/>},
    ].forEach(({id, component}) =>
        it('should render correct component', () => {
            const result = getMiConfiguration(id)
        }))
     })

2 个答案:

答案 0 :(得分:1)

这对我有帮助,但仍然存在测试redux表单的问题

describe('getMiConfiguration', () => {
    ;[{id: MiConfigurationTypes.AccessPointOnly, component: null},
        {id: MiConfigurationTypes.WanderingDetection, component: <WanderingDetection/>},
        {id: MiConfigurationTypes.MuteWanderingDetection, component: <WanderingDetection/>},
        {id: MiConfigurationTypes.LockedWanderingControl, component: <WanderingControl/>},
        {id: MiConfigurationTypes.OpenWanderingControl, component: <WanderingControl/>},
    ].forEach(({id, component}) =>
        it(`should render correct ${component} component for ${id} type`, () => {
            const result = getMiConfiguration(id)

            if (component === null)
                expect(result).to.be.null
            else
                result.type.should.be.equal(component.type)
        }))
})

答案 1 :(得分:0)

我会从循环中提取it方法,如:

describe.only('getMiConfiguration', () => {
    it('should render correct component', () => {
        [
            {id: MiConfigurationTypes.AccessPointOnly, component: null},
            {id: MiConfigurationTypes.WanderingDetection, component: <WanderingDetection/>},
            {id: MiConfigurationTypes.MuteWanderingDetection, component: <WanderingDetection/>},
            {id: MiConfigurationTypes.LockedWanderingControl, component: <WanderingControl/>},
            {id: MiConfigurationTypes.OpenWanderingControl, component: <WanderingControl/>},
        ].forEach(({id, component}) => {
            const result = getMiConfiguration(id);
            // your assertion
            expect(result).toBe('your expected value');
        })
    })
})