2

我有一个Vue具有以下结构的组件

// parent-component.vue
<main>
  <component :is="my.component" @custom-event="callback"/>
</main>

子组件始终具有以下内容mixin

// child-shared-mixin.js
export default {
  mounted() {
    this.$emit('custom-event')
  },
}

这是子组件的示例

// child-component.vue
<script>
  import { ChildSharedMixin } from 'mixins'

  export default {
    mixins: [
      ChildSharedMixin
    ],
  }
</script>

因此,每当child挂载时,我都会向父级触发一个事件,然后执行回调。

使用Jest以及Vue Test Utils如何测试mixin已触发的custom-event

4

1 回答 1

2

emit() 返回一个包含 Wrapper vm 发出的自定义事件的对象。

https://vue-test-utils.vuejs.org/api/wrapper/#emitted

所以要测试子组件,你可以这样做:

describe('myComponent',()={
    it('should trigger custom-event on mounted hook',()=>{
        let target=mount(myComponent);
        expect(target.emitted()['custom-event']).toBeTruthy();
    })
})

为了测试父组件,你可以反过来——通过模拟事件并期望回调被调用。看一眼:

https://vue-test-utils.vuejs.org/api/wrapper/trigger.html

于 2018-11-09T10:03:58.660 回答