Фиктивная функция JavaScript, импортированная из vue - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь настроить тесты для компонента vue collector, который импортирует модуль Javascript для сбора некоторых данных.

компоненты / collector.vue

<script>
import dataService from '@/services/dataService.js';
...

dataService.collectResults().then(results => {
  this.data = results;
});
</script>

Файл JavaScript:

Услуги / dataService.js

let dataService = {
    collectResults() {
        [...]
        return dataPromise;
    }
    [...]
} 
export default dataService;

Я использую jest для тестов для компонента collector и пытаюсь смоделировать метод collectResults.

collector.spec.js

jest.mock('dataService');
import { mount } from '@vue/test-utils';
import collector from '@/components/collector.vue';
import VueRouter from 'vue-router';


describe('behaviour tests', () => {
  let cmp;
  beforeEach(() => {
    Vue.use(VueRouter);
    const router = new VueRouter();
    cmp = mount(collector, {
      router
    });

it('dummy test', () => {
  console.log(cmp.vm.data);
}

услуги / __ издевается __ / dataService.js

const dataServiceMock = jest.genMockFromModule('dataService');

function __collectResults() {
  return new Promise(() => {
    console.log('mocked!');
    [...]
  });
}

dataServiceMock.collectResults = __collectResults;
export default dataServiceMock;

Однако при запуске тестов выполняется оригинальный файл dataService.js (что в моем случае приводит к исключению).

Каким должен быть правильный подход к этому случаю, если учесть, что я должен смоделировать ~ 10 функций, оставляя других такими, какие они есть?

...