Получение «Ожидаемых 4 аргументов, но получено 1» при попытке использовать средство получения vuex с typescript

#typescript #vue.js #jestjs #vuex #quasar

#typescript #vue.js #jestjs #vuex #квазар

Вопрос:

Я пытаюсь выполнить модульное тестирование средства получения и получаю сообщение об ошибке 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;
 

Вот как я пытаюсь протестировать средство получения

  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;
 

Комментарии:

1. HttpMocks.mockToken Имеет ту же подпись, token(state: AuthenticationStateInterface) что и?

2. @Anatoly HttpMocks.mockToken — это просто строка JWT. token в sate тоже принимает строку. Я обновил ответ с помощью ввода моего состояния

Ответ №1:

Проблема заключалась в том, что я просто не следил за подписью получателя.

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

Мне просто нужно было заполнить пробелы, поэтому у меня это при вызове средства получения в тесте

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

rootState это просто издевательская версия всего состояния и authenticationState макет состояния локального модуля