Тестовая функция возвращает другой вариант сценария - Jest энзим - PullRequest
0 голосов
/ 11 апреля 2019

Попытка запустить тест, и моя функция не возвращает то, что я ожидаю, исходя из моего случая.Не уверен, правильно ли я применяю условия

, вот функция:

renderColumnDropdown = () => {
  if (this.props.columnIdList != undefined) {
  let columnOptions = Object.keys(this.props.columnIdList).map(key => {
  switch (key) {
    case 'sort':
      return false
    case 'filters':
      return false
    })
   return (
    default:
    return (
      <option value={key} key={key}>{this.props.columnIdList[key]}</option>
    )
  return (
   <select value={this.state.column} name='column' id='filter-column' onChange={this.handleChange} defaultValue={this.props.defaultData != null ? this.props.defaultData.column : 'default'}>
    {columnOptions}
  </select>
)

Вот что у меня есть для моего теста: использование шутки и энзима для React JS

it('Test renderColumnDropdown method',() => {
    wrapper.setProps({
        columnIdList:[],
        columnOptions:[{
            case:'sort'
         }]   
     })
     wrapper.update();
     expect(wrapper.instance().renderColumnDropdown({columnOptions:[{case:""}]})).toEqual();
});

Я ожидал, что вернусь сообщение о том, что это равно Ложь, но сейчас возвращается "

Что можно настроить на моих реквизитах, чтобы убедиться, что я могу протестировать каждый сценарий случая

1 Ответ

2 голосов
/ 11 апреля 2019

renderColumnDropdown перебирает columnIdList проп, не columnOptions.

Вероятно, должно быть:

wrapper.setProps({
    columnIdList:[{
        case:'sort'
     }]   
 })

Он также не принимает аргументы типа renderColumnDropdown({columnOptions:[{case:""}]})

Функция возвращает элементы React, их можно отобразить:

const columnsWrapper = shallow(wrapper.instance().renderColumnDropdown());

Тогда обертка может быть утверждена, что опции там ожидаются или нет:

expect(columnsWrapper.find('select').dive().find('option')).to.have.lengthOf(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...