Я использую Vuex в настройке машинописного текста и хочу провести модульное тестирование действия, но у меня возникают проблемы с установкой параметра this
метода действия.
Действие выглядит примерно так:
export const login: ActionHandler<AuthState, RootState> = ({ commit },
creds: { email: string, password: string }) => {
};
Тест выглядит следующим образом:
describe('actions', () => {
test('login should call api with credentials', () => {
(ApiService.post as jest.Mock).mockResolvedValue({
data: { userId: 1234 }
});
const commit = jest.fn();
login({ commit }, { email: 'username@gmail.com', password: 'Pa$$w0rd123' });
});
});
Проблема в том, что ActionHandler
имеет такую подпись, как: login(this: Store<RootState>, injectee: ActionContext<AuthState, RootState>, payload?: any): any
.
И TS выдает мне ошибку:
The 'this' context of type 'void' is not assignable to method's 'this' of type 'Store<RootState>'.ts(2684)
Я не могу понять, как установить экземпляр Store<RootState>
в качестве this
действия входа в систему. Я делаю это неправильно? Я понимаю, что эта проблема не возникнет, если я использую vanilla JS, но хотел бы продолжать использовать TS, если это возможно.