Тестовый метод иначе / если не возвращается ожидаемое значение - PullRequest
0 голосов
/ 10 апреля 2019

Попытка проверить следующий метод ниже. Тест в данный момент возвращает только «столбец». Просто интересно, как я могу проверить другие, такие как «полярный», «столбчатый» и т. Д.

   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 Ответ

1 голос
/ 10 апреля 2019

Я думаю, что проблема здесь в функции getChartType.

В тесте код отправляет объекты в качестве аргументов ({defaultData:{stacked:""}}), но функция getChartType не принимает никаких аргументов; он читает его props.

Вот почему это трудно проверить; в изоляции теста props всегда одинаковы. Я бы предложил преобразовать getChartType в функцию, которая принимает аргумент объекта. В своем коде вы отправите props или часть props; в своем тесте вы отправите свой объект.

Функцию будет легче тестировать и понимать, потому что вы не полагаетесь на что-то извне функции (props).

...