测试方法,否则/如果未返回期望值

时间:2019-04-10 17:25:21

标签: reactjs jestjs enzyme react-props

尝试在下面测试以下方法。目前,测试仅返回“列”。只是想知道如何测试“极性”,“列堆叠”等其他类型。

   getChartType = () => {
if (this.props.defaultData.stacked === 'polar') {
  return 'polar'
}
else {
  if(this.props.defaultData.stacked === 'false'){
    return this.props.defaultData.type
  }
  else{
    if(this.props.defaultData.stacked === 'true' && this.props.defaultData.type === 'column'){
      return 'columnstacked'
    }
  else if(this.props.defaultData.stacked === 'true' && this.props.defaultData.type === 'bar'){
      return 'barstacked'
    }
  }
 return 'column'

将Jest和Enzyme用于React Js。 浅呈现我的组件 这是我目前的测试结果。

 it('Test getChartType method',() => {
  wrapper.setProps({
  defaultData:{
    stacked:"",
    type:"",
    category:{
        $:{
            id:{},
        },
    },
}})
wrapper.update();
expect(wrapper.instance().getChartType({defaultData:{stacked:""}})).toEqual("column"); //WORKING
expect(wrapper.instance().getChartType({defaultData:{stacked:"percent", type:'area'}})).toEqual("areastacked100");  //NOT WORKING
 });

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是getChartType函数。

在测试中,代码将对象作为参数发送({defaultData:{stacked:""}}),但是函数getChartType不接受任何参数;它会读取其props

这就是为什么很难测试的原因;在测试隔离中,props始终相同。我建议将getChartType转换为接受对象参数的函数。在您的代码中,您将发送propsprops的一部分;在测试中,您将发送对象。

该功能将更易于测试和理解,因为您不必依赖于功能之外的其他事物(props)。