#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
макет состояния локального модуля