Тестирование мутанта vuex с шуткой - PullRequest
0 голосов
/ 19 ноября 2018

Я тестировал мое хранилище vuex со следующей структурой

/ src / store.js

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

const state = {
  data: []
};

export const mutations = {
  SET_DATA(state, data) {
    state.data = data;
  }
};

export const actions = {
  fetchData({ commit }) {
    fetch("https://jsonplaceholder.typicode.com/users")
      .then(res => res.json())
      .then(data => commit(SET_DATA, data))
      .catch(err => console.log(err));
  }
};

export default new Vuex.Store({
  state,
  mutations,
  actions
});

Мой тестовый файл для действий утверждает для URLи фиксация запуска

it("should fetch correct data and commit to store", () => {
    // Mock fetch
    global.fetch = jest.fn().mockImplementationOnce(() =>
      Promise.resolve({
        status: 200,
        json: () => Promise.resolve(JSON.stringify(mockData))
      })
    );

    return store.dispatch("fetchData").then(() => {
      expect(global.fetch).toHaveBeenCalledWith(
        "https://jsonplaceholder.typicode.com/users"
      );
      expect(mockSetData).toHaveBeenCalled();
    });
  });

В настоящее время мой тест проходит только для URL и не вызывает mockSetData, что является шуткой.

Я новичок в TDD и не совсем уверен, почемуэто терпит неудачу. Вот реализация кодов и коробки для большего контекста

...