如何在Vuex操作中测试多个提交

时间:2018-12-18 10:40:37

标签: vuex

我目前正在掌握Vuex中的测试。我有以下操作:

import { fetchProfile } from '../api'

export const getProfile = ({ commit }) => {
  return fetchProfile()
   .then(async (profile) => {
    await commit(types.SET_AUTHENTICATED, true)
    await commit(types.SET_PROFILE, profile.user)
   })
}

然后进行以下测试:

jest.mock('../../src/api')

describe('task actions', () => {
  it('fetchProfile commits user profile returned by api', async () => {
    const profile = { first_name: 'John', last_name: 'Doe' }
    fetchProfile.mockResolvedValue(profile)
    const commit = jest.fn()
    await actions.getProfile({ commit })
    expect(commit).toHaveBeenCalledWith(types.SET_AUTHENTICATED, true)
    expect(commit).toHaveBeenCalledWith('SET_PROFILE', profile)
  })
})

此操作失败

  

“ SET_PROFILE”   作为参数1,但它被称为    “ SET_AUTHENTICATED”。

如果我注释掉第二个期望,则测试通过。

但是,我如何测试两个提交都正确发生了? 任何帮助或指导将不胜感激

谢谢。

1 个答案:

答案 0 :(得分:0)

我在每个期望的开头添加了一个等待,现在它可以正常工作了!