Vue test-utils, как проверить кнопку navbar с помощью vuetify - PullRequest
0 голосов
/ 20 декабря 2018

в моем компоненте navbar у меня есть метод, который выполняет router.push ()

methods: {
  redirectToScreen(payload) {
    this.$router.push({ name: `${payload}` });
  }
}

и тогда это мой шаблон

<template lang="pug">
  v-toolbar#nav-toolbar(
    app
    :clipped-left="clipped"
    color="white"
    height="80px"
    fixed
  )
    v-toolbar-items

      //- ADMIN_OPD
      v-btn.admin-outpatient-event(
        flat
        v-if="userRole === 'ADMIN_OPD'"
        @click="redirectToScreen('admin-new-customer')"
      ) OUTPATIENT
      v-btn.admin-register-event(
        flat
        v-if="userRole === 'ADMIN_OPD'"
        @click="openRegisterAlert()"
      ) Register
</template>

Я хочу проверить этот код со следующими характеристиками

describe("Navbar.vue", () => {
  var wrp

  const localVue = createLocalVue();

  const spy = jest.fn();

  localVue.use(Vuetify);
  localVue.use(VueRouter);

  var router = new VueRouter({
    routes
  })

  beforeEach(() => {
    wrp = shallowMount(Navbar , {
      localVue,
      router,
      computed: {
        dataToken() {
          return "123124asd"
        },
        userRole() {
          return "ADMIN_OPD";
        },
        financeOnly() {
          return true;
        }
      }
    })
  })

  it("should redirect to admin-opd if navbar button got clicked", () => {
      wrp.vm.$router.push = spy;
      wrp.find(".admin-outpatient-event").trigger("click");
      expect(spy).toHaveBeenCalledWith({ name: 'admin-new-customer' });
  });
});

но, к сожалению, я получил ошибку

Expected mock function to have been called with:
  [{"name": "admin-new-customer"}]
But it was not called.

Как мне написать ожидаемый тест (), чтобы убедиться, что «name»: «admin-новый клиент назван

спасибо за отзыв

1 Ответ

0 голосов
/ 20 декабря 2018

Возможно, попробуйте throw spy.mock.calls ( Jest mock call ) перед expects(), чтобы увидеть аргументы, с которыми был вызван шпион.
Если аргументов нет, шпион не был вызван, и что-то пошлонеправильно с нажатием и нажатием.
В противном случае код выглядит хорошо для меня.

...