Skip to content
Advertisement

How to mock dispatch in vueJs testing

I am currently performing unit tests on my application as seen. But I have a problem. How to mock or exploit the dispatch of Vuex ?

My method to test :

methodA({ dispatch, commit }, { data }) {
        dispatch('methodB', { data });
    }
  };

My unit test :

describe('UnitTesting', () => {
  it('if method called', () => {
    const commit = jest.fn();
    const dispatch = jest.fn('methodB');
    service.actions.methodA({ dispatch, commit });
    expect(dispatch).toHaveBeenCalledTimes(1);
  });

I have a error message : Dispatch is not a function. Why ? Do you help me please ? I don’t understand why I had this message.

thanks

Advertisement

Answer

jest.fn('methodB') is not not a proper call, thus the resulting dispatch constant not being a function.

The fn parameter should be a function. Either do jest.fn(() => Promise.resolve('functionB')) or jest.fn().mockResolvedValue('functionB')

But just jest.fn() would make it here.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement