Vue-composition-api + vue routerのunit testの方法

vue-composition-apivue router を組み合わせたunit testの方法について教えてもらえませんか?
[Vue warn]: Error in v-on handler: "TypeError: Cannot read property 'push' of undefined" と表示され困っています。

context.root.$router にmockを注入してテストする解法を考えてみましたが、上手くいきませんでした。。。
テスタビリティを考慮し、context.root.$router は利用せず、自前でinject + provideした方がいいのでしょうか?

// About.vue
<template>
  <div class="about">
    <h1>This is an about page</h1>
    <button @click="onClick" data-test="home">
      go to top
    </button>
  </div>
</template>

<script>
export default {
  name: 'about',
  setup (props, { root }) {

    function onClick () {
      root.$router.push('/')
    }

    return { onClick }
  }
}
</script>
// about.spec.js
import { createLocalVue, shallowMount } from '@vue/test-utils'
import VueRouter from 'vue-router'
import VueCompositionApi from '@vue/composition-api'
import About from '@/views/About.vue'

const localVue = createLocalVue()
localVue.use(VueCompositionApi)
localVue.use(VueRouter)
const router = new VueRouter()

const mountComponent = () => shallowMount(About, { localVue, router })

describe('About.vue', () => {
  it('is Vue instance', () => {
    const wrapper = mountComponent()

    expect(wrapper.isVueInstance()).toBeTruthy()
  })

  it('should go to home when clicked button', async () => {
    const wrapper = mountComponent()

    const button = wrapper.find(`[data-test="home"]`)
    button.trigger('click')
    await wrapper.vm.$nextTick()

    /*
      TODO onClick関数のrouterを経由してAbout.vueからHome.vueに遷移することを確認する
      または、routerをmock化してrouterが呼ばれていることを確認する
     */
  })
})