Как я могу смоделировать внешний класс, используя шутку? - PullRequest
0 голосов
/ 19 марта 2019

В настоящее время у меня есть следующий код страницы Vue:

<template>
   // Button that when clicked called submit method
</template>

<script>
import { moveTo } from '@/lib/utils';

export default {
  components: {
  },
  data() {
  },
  methods: {
    async submit() {
      moveTo(this, COMPLETE_ACTION.path, null);
    },
  },
};
</script>

, а затем у меня есть тестовый файл для этой страницы.Моя проблема в том, что я пытаюсь проверить и подтвердить, что метод moveTo вызывается с правильными параметрами, используя Jest.Он продолжает отображать ожидаемый неопределенный, но полученный объект.Вот ключевые моменты из тестового файла:

  import * as dependency from '@/lib/utils';
  dependency.moveTo = jest.fn();
  // I then trigger the button call which calls the submit method on the page
  expect(dependency.moveTo).toHaveBeenCalledWith(this, COMPLETE_ACTION.path, null);

Я не уверен, что это в этом контексте и что я должен на самом деле передавать. Просто чтобы заметить, что я использую монтированиепомощник из утилиты vue test.

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Я решил свою проблему, и это был этот параметр в тесте. Этот не был определен в тесте и ожидал совпадения с компонентом VueComponent.

Я использовал свою оболочку, а затем получил доступ к VueComponent, сославшись на свойство vm согласно документации: https://vue -test-utils.vuejs.org / api / wrapper / # properties

В свою очередь я обновил следующую строку и добавил wrapper.vm

  expect(dependency.moveTo).toHaveBeenCalledWith(wrapper.vm, COMPLETE_ACTION.path, null);
0 голосов
/ 19 марта 2019

Вам нужно смоделировать сам модуль. В вашем случае вы делаете утверждение о шпионской функции, которая никогда не вызывается.

Вы можете добавить макет модуля, создав каталог " mocks /, непосредственно примыкающий к модулю " . Для модуля узла " Если модуль, над которым вы работаете, является модулем узла (например, lodash), то этот образец должен быть помещен в каталог mocks рядом с узлом_модуля " .

В вашем случае (есть другие подходы) вам нужно создать папку __mocks__ рядом с папкой node_modules, создать файл в __mocks__/lib/utils/index.js и экспортировать макетную функцию:

    export const moveTo = jest.fn()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...