Ich habe eine Komponente, die auf ein Ereignis wartet, das von der Vue $ -Root-Instanz ausgegeben wird.
export default {
data() {
return {
name: ''
}
},
methods: {
openModal(name) {
this.name = name
}
},
mounted() {
this.$root.$on('open-modal', name => {
this.openModal(name);
});
}
}
Und ich habe einen anderen Ort der Code, wo ich dieses Ereignis aufrufen.
Wie kann ich einen Komponententest schreiben, der dieses Ereignis auf $ root aufruft und bestätigt, dass das Ereignis aufgerufen wurde? Ich verwende Vue Test Utils https://vue-test-utils.vuejs.org/en/ und kann keine Möglichkeit finden, das Ereignis aufzurufen.
Ich habe das versucht, aber es funktioniert nicht.
it('sets the modal name on the open-modal event',() => {
const wrapper = mount(Modal);
wrapper.vm.$root.$emit('open-modal', 'my-modal')
expect(wrapper.vm.$data.name).to.equal('my-modal');
});
Dies kann relevant sein: https://github.com/vuejs/vue-test-utils/issues/6 –
Dank @RoyJ ich beim Hören für die Veranstaltung nicht wirklich so interessiert bin, wie ich bin in es aber ausstrahlt. –
Ich denke, dass Ihre Emission korrekt ist. Der Grund dafür, dass das Datenupdate nicht angezeigt wird, besteht darin, dass der Handler vor dem Test keine Leerlaufzeit hatte, um zu antworten. –