Тестирование Vue — «… .push не является функцией»

#javascript #unit-testing #vue.js #jestjs #vue-test-utils

#javascript #модульное тестирование #vue.js #jestjs #vue-test-utils

Вопрос:

Я пытаюсь протестировать метод компонента, который добавляет новую запись к уже существующему объекту.

 addTag: function () {
  this.value[this.field.key].push(this.tag)
  this.tag = ''
}
 

Я просто пытаюсь вызвать этот метод внутри моего теста через

     wrapper.setProps({
      field: {
        key: 'tag'
      },
      value: {
        tag: {}
      }
    })
...
    wrapper.vm.addTag()
 

но он выдает и ошибку

 TypeError: this.value[this.field.key].push is not a function
 

Я заранее установил все необходимые данные и реквизиты (поле.ключ и тег), так что это не проблема. запуск других методов работает полностью нормально, push похоже, проблема

Ответ №1:

Это потому this.value['tag'] , что это объект, а не массив, поэтому push метода нет.

Определение его как массива вместо этого изменило бы это:

 wrapper.setProps({
  field: {
    key: 'tag'
  },
  value: {
    tag: []
  }
})