Тестирование метода с различными сценариями - - PullRequest
1 голос
/ 14 марта 2019

Как я могу протестировать метод, в котором нет передачи событий onBlur, onChange, onClick.

Этот файл состоит только из case, break и switch.Так что я не совсем уверен, как начать этот файл.Я уже протестировал базовый реквизит, и он корректно рендерится

Использование JEST - ENZYME REACT JS

Другой метод, который вызывает BuildShapeObj

updateFilterList = (filterList) => {
  let localFilters = Object.assign({}, this.state.filters)
  // NOTE: need to change localFilters[props.currentColumnID] with filterList.column
  localFilters[this.props.currentColumnID] = filterList
  if (Object.keys(localFilters[this.props.currentColumnID]).length === 0) {
  delete localFilters[this.props.currentColumnID]
 }
 let updateObj = this.buildShapeObj({switchValue: 'filtering', shapeObjValue: localFilters})
  let updateBoolean = this.shouldUpdateViewXML(localFilters)
  if (updateBoolean) {
  this.props.updateViewXMLValue(updateObj)
}
  this.setState({
  filters: localFilters
})
}

Вот только часть метода

buildShapeObj = updateObj => {
  let pipe = "shape";
  let shapeObj = {};

  switch (updateObj.type) {
    case "sort":
      shapeObj = {
        0: {
          pipe,
          action: "transform",
          columnName: updateObj.column,
          sort: updateObj.value
        }
      };
      break;
    case "group":
      shapeObj = {
        0: {
          pipe,
          columnName: updateObj.column,
          transformType: "replaceElement",
          matchValue: "resetanalysis"
        },
        1: {
          pipe,
          columnName: updateObj.column,
          transformType: "replaceElement",
          matchValue: "resetallgrouping"
        }
        // ...
      };
      break;
  }
  return shapeObj; //end of method line 350
};

Если кто-то может помочь в настройке, я был бы признателен, спасибо

1 Ответ

1 голос
/ 14 марта 2019

Это чистая функция , поэтому для проверки нужно просто убедиться, что она возвращает правильный вывод на основе заданного ввода:

describe('buildShapeObj', () => {

  it('should handle sort', () => {
    expect(buildShapeObj({
      type: 'sort',
      column: 'the column',
      value: 'the value'
    })).toEqual({
      0: {
        pipe: 'shape',
        action: 'transform',
        columnName: 'the column',
        sort: 'the value'
      }
    });  // Success!
  });

  it('should handle group', () => {
    expect(buildShapeObj({
      type: 'group',
      column: 'the column'
    })).toEqual({
      0: {
        pipe: 'shape',
        columnName: 'the column',
        transformType: "replaceElement",
        matchValue: "resetanalysis"
      },
      1: {
        pipe: 'shape',
        columnName: 'the column',
        transformType: "replaceElement",
        matchValue: "resetallgrouping"
      }
    });  // Success!
  });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...