2017-12-19 51 views
0

나는 리턴하는 함수를 HOC componetns 파라미터에 의존한다. 나는이 구성 요소를 reduxForm HOC에 wrrap했다. 유형()을 사용하여 효소로 시험하고 싶습니다. 이 함수는 FormValues ​​형식의 HOC 구성 요소를 반환하지만 HOC없이 테스트를 반환하는 방법입니다. proxyquire와 내가 수출을 무시하는 proxyquire과 해결책을 발견프록시 유닛으로 HOC 성분의 타입에 대한 효소 유닛 테스트

export const WanderingDetection = ({miConfigurationType}) => 
    <Grid container> 
     <Grid item xs={12}> 
      <GeneralMiConfigurations /> 
     </Grid> 
     {MiConfigurationTypes.MuteWanderingDetection === miConfigurationType && 
      [ 
       <Grid item xs={10} style={{margin: '0 auto'}}> 
        <Divider/> 
       </Grid>, 
       <Grid item xs={12} style={{alignSelf: 'center'}}> 
        <InfoMessage id='passage.label.useInputToMuteLocationField'/> 
        <InputTypeConfiguration/> 
       </Grid>, 
      ] 
     } 
    </Grid> 

WanderingDetection.propTypes = { 
    miConfigurationType: PropTypes.string, 
} 
export default formValues('miConfigurationType')(WanderingDetection) 
+0

파일에서 WanderingDetection 구성 요소를 반환하고 단위 테스트에서 사용할 수 있습니다. 내보내기 {WanderingDetection}; – eramit2010

+0

수출이 있지만 함수가 HOC 구성 요소를 반환하고 { 'wanderingDetection'}없이 import 할 때 component.type (WanderingDetection)과 result.type() // FormValues ​​HOC을 비교합니다 –

+0

당신의 기본값 HOC로 반품하는 것이 좋습니다. 단위 테스트를 위해 하나 이상의 내보내기를 추가하면 formValues ​​내부에 래핑하지 않고 구성 요소를 반환하므로 테스트 할 수 있습니다. – eramit2010

답변

0

구성 요소의

기능

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('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) 
     })) 
}) 

예를 테스트하는 방법

const {getMiConfiguration} = proxyquire('../../../../src/components/devices/miConfiguration', { 
    './wanderingDetection': {default: <WanderingDetection/>}, 
    './wanderingControl': {default: <WanderingControl/>}, 
})