Я пишу несколько модульных тестов на уровне API приложения, и у меня возникают проблемы с использованием jest для насмешки над различными конечными точками.У меня нет никакого опыта в этом, и многие статьи там не помогают моему конкретному сценарию.
У меня есть особая настройка модуля, которая выполняет запросы с использованием Axios.Это конкретный вызов, который мне нужно смоделировать:
export async function ajax<T>(options: AxiosRequestConfig): Promise<T> {
options.baseURL = ApiConfig.currentContext.ApiPath;
options.headers = options.headers || {};
options.headers['Accept-Language'] = Locale.resolveCulture();
options.withCredentials = true;
try {
const response = await AXIOS_ADAPTER(options);
return response.data;
}
catch (error) {
throw new ApiError(error);
}
}
А вот как выглядит мой текущий тест:
import * as http from '../src/http';
import { account } from '../src/api/account';
describe('Account Credit Cards Test Suite', () => {
it('should get all saved credit cards in an account', async () => {
const spy = jest.spyOn(http, 'ajax');
const getAll = await account.creditCards.getAll();
expect(spy).toHaveBeenCalled();
expect(getAll).toBe(true);
});
});
Это первоначальный тест, чтобы увидеть, смогу ли я вообще получитьэто работает, но, к сожалению, вызов resolCulture полагается на объект окна, поскольку он предназначен для веб-приложения.
Мой вопрос заключается в том, как я могу высмеивать вызов ajax, чтобы я мог видеть, какие параметры передаются в него и из него, чтобы утверждать, что запрос ведет себя как ожидалось.