尝试在下面测试以下方法。目前,测试仅返回“列”。只是想知道如何测试“极性”,“列堆叠”等其他类型。
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
});
答案 0 :(得分:1)
我认为这里的问题是getChartType
函数。
在测试中,代码将对象作为参数发送({defaultData:{stacked:""}}
),但是函数getChartType
不接受任何参数;它会读取其props
。
这就是为什么很难测试的原因;在测试隔离中,props
始终相同。我建议将getChartType
转换为接受对象参数的函数。在您的代码中,您将发送props
或props
的一部分;在测试中,您将发送对象。
该功能将更易于测试和理解,因为您不必依赖于功能之外的其他事物(props
)。