web-dev-qa-db-fra.com

Vue test-utils comment tester un routeur.Push ()

Dans mon composant, j'ai une méthode qui exécutera une router.Push()

import router from "@/router";
// ...
export default {
  // ...
  methods: {
    closeAlert: function() {
      if (this.msgTypeContactForm == "success") {
        router.Push("/home");
      } else {
        return;
      }
    },
    // ....
  }
}

Je veux le tester ...

J'ai écrit les spécifications suivantes ..

it("should ... go to home page", async () => {
    // given
    const $route = {
      name: "home"
    },
    options = {
      ...
      mocks: {
        $route
      }
    };
    wrapper = mount(ContactForm, options);
    const closeBtn = wrapper.find(".v-alert__dismissible");
    closeBtn.trigger("click");
    await wrapper.vm.$nextTick();
    expect(alert.attributes().style).toBe("display: none;")
    // router path '/home' to be called ?
  });

1 - Je reçois une erreur

console.error node_modules/@vue/test-utils/dist/vue-test-utils.js:15
[vue-test-utils]: could not overwrite property $route, this is usually caused by a plugin that has added the property asa read-only value

2 - Comment dois-je écrire le expect () pour être sûr que cet itinéraire/home a été appelé

merci pour vos commentaires

5
user762579

En supposant que vous avez correctement configuré les pré-requis et similaire à this

Utilisez simplement

it("should ... go to home page", async () => {
    const $route = {
      name: "home"
    }

  ...

  // router path '/home' to be called ?
  expect(wrapper.vm.$route.name).toBe($route.name)
});
0
Ru Chern Chong