尝试将 vuex getter 与打字稿一起使用时获得“预期的 4 个参数,但得到 1 个”

Getting `Expected 4 arguments, but got 1` when trying to use a vuex getter with typescript

我正在尝试对 getter 进行单元测试,但在尝试使用所述 getter 时出现错误 Expected 4 arguments, but got 1.。我使用 quasar 构建了应用程序,我正在使用 typescript。

HttpMocks.mockToken 只是一个通用的 JWT 字符串

const getters: GetterTree<AuthenticationStateInterface, StateInterface> = {
  token(state: AuthenticationStateInterface) {
    return state.token;
  }
};

export default getters;

以下是我如何尝试测试 getter

 describe('Getters', () => {
    it('Token', () => {
      const state = {
        token: HttpMocks.mockToken
      };
      const result = getters.token(state) // Expected 4 arguments, but got 1.
    });
  });

export interface AuthenticationStateInterface {
  token: string;
  expires: string;
  error?: string;
}

const state: AuthenticationStateInterface = {
  token: '',
  expires: '',
  error: ''
};

export default state;

问题是我没有遵循 getter 的签名。

export type Getter<S, R> = (state: S, getters: any, rootState: R, rootGetters: any) => any;

我只需要填写空白,所以在测试中调用 getter 时我有这个

const result = getters.token(authenticationState, {}, rootState, {});

rootState 只是整个状态的模拟版本,authenticationState 是本地模块状态的模拟