Testing Component Methods in Vue.js using jest
In this tutorial, we are going to learn about how to test vue.js component methods using jest and vue-test-utils.
In vue methods
help us to add functionalities to vue components.
If you don’t know how to configure jest with vue, you can check out my testing introduction tutorial.
The example component we are testing now.
<template>
<div>
<h1>{{title}}</h1> <button @click="changeTitle">Change title</button> </div>
</template>
<script>
export default {
data: function() {
return {
title: "Hello" };
},
methods: {
changeTitle() {
this.title = "Hi"; }
}
};
</script>
In the above component, we have defined a changeTitle
method which is used to update the title
property.
Let’s write tests for the Welcome
component changeTitle
method.
The vue-test-utils wrapper
object provides us a component instance via vm
property by using that we can call component methods and also access data properties.
import { shallowMount } from '@vue/test-utils';
import Post from '../src/components/Welcome.vue'
describe('Testing Component Methods', () => {
const wrapper = shallowMount(Post);
it('correctly updates the title when changeTitle is called', () => {
expect(wrapper.vm.title).toBe('Hello'); //initial title Hello wrapper.vm.changeTitle(); // calling component method expect(wrapper.vm.title).toBe('Hi'); // title updates to Hi
})
})
In the above code, we are testing for the component data property title
to be Hi
when a changeTitle()
method is called.