javascript - Vue 测试 - '... .push is not a function'

标签 javascript unit-testing 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

我已经预先设置了所有需要的数据和 Prop (field.key和tag),所以这不是问题。运行其他方法完全正常,push 似乎是问题所在

最佳答案

这是因为 this.value['tag'] 是一个对象,而不是数组,所以没有 push 方法。

将其定义为数组会改变这一点:

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

关于javascript - Vue 测试 - '... .push is not a function',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65171497/

相关文章:

javascript - div标签的分层问题

java - 单元测试复合服务方法

django - 使用环境变量测试 Django View

javascript - Vue.js - 从指令发出事件

jquery - VueJS : Fire jQuery after v-for?

javascript - 向 Web 表单中的控制方法发出 ajax 请求

javascript - 如何在切换类中显示不同的工具提示文本

python - 如何设置多个单元测试共享的资源?

vue.js - 访问 Vue3 全局组件

javascript - 背景图像裁剪到可拖动的 div