unit-testing - 使用内联模板对 vue.js 组件进行单元测试

标签 unit-testing vue.js vue-component

我正在使用 Vue 2 来增强 Ruby on Rails 引擎,使用现有 Haml View 中的 inline-template 属性作为我的 Vue 组件的模板。

是否可以测试这样定义的组件的方法?我能找到的所有测试示例都假定使用单文件 .vue 组件。

这些测试(使用 Mocha 和 Chai)失败并显示 [Vue warn]: Failed to mount component: template or render function not defined.

示例组件:

//main-nav.js

import Vue from 'vue'
const MainNav =  {
  data: function() {
    return {open: true}
  },

  methods: {
    toggleOpen: function(item) {
      item.open = !item.open
    }
  }
}

export default MainNav

示例测试:

//main-nav.test.js
import MainNav from '../../admin/main-nav'

describe('MainNav', () => {
  let Constructor
  let vm

  beforeEach(() => {
    Constructor = Vue.extend(MainNav)
    vm = new Constructor().$mount()
  })

  afterEach(() => {
    vm.$destroy()
  })

  describe('toggleOpen', () => {
    it('has a toggleOpen function', () => {
      expect(vm.MainNav.toggleOpen).to.be.a('function')
    })

    it('toggles open from true to false', () => {
      const result = MainNav.toggleOpen({'open': true})
      expect(result).to.include({open: false})
    })
  })
})

最佳答案

事实证明,您仍然可以在组件文件中指定一个模板,并且将使用任何 inline-template 模板来支持这一点。

关于unit-testing - 使用内联模板对 vue.js 组件进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587988/

相关文章:

c++ - 如何对涉及文件输入输出的方法进行单元测试?

asp.net-mvc - 单元测试 MVC 中的全局过滤器

iOS UITests - 如何区分两个不同的 XCUIElement?

javascript - Vue 将新项目添加到对象属性数组中

python - Django 测试,模拟对 url 的有效请求

ajax - vue.js:使用 v-for 时出错

vue.js - VueJS 将日期值设置为 Date 而不是 String

vue.js - 如何制作可点击的带有悬停效果的q卡?

javascript - 使用 Webpack 进行 Vue 异步导入

javascript - 将子组件导入父组件 Vue.js