[unit test] How to correctly assert a function is called?

I am new to unit test about vue. I am stuck when I tried to accomplish a click event test.
Here is my component.
<template> <li class="message" style="margin-top:10px" @click="handleClick">{{message}}</li> </template>

export default {
    name: "Message",
    methods: {
        handleClick() {
            this.$emit("message-clicked", this.message);
props: {
    message: {
        type: String,
        required: true,
        validator: message => message.length > 1

And my test spec is

import { mount } from "@vue/test-utils";
import Message from "../../src/components/Message.vue"

const createCmp = propsData => mount(Message, { propsData });

describe("Message.spec.js", ()=>{
    it("calls handleClick when click on message", async () => {
        const cmp = createCmp({ message: "Cat" });
        const spy = jest.spyOn(cmp.vm, "handleClick");


        await cmp.vm.$nextTick();


I have vue-cli installed with jest being selected.
But every time I run the test, it says that

Expected mock function to have been called, but it was not called.