Тестирование Jest API - PullRequest
       3

Тестирование Jest API

0 голосов
/ 21 сентября 2018

Я пишу несколько модульных тестов на уровне 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, чтобы я мог видеть, какие параметры передаются в него и из него, чтобы утверждать, что запрос ведет себя как ожидалось.

1 Ответ

0 голосов
/ 21 сентября 2018

Если вы используете axios для вызовов API.Вы можете использовать модуль npm axios-mock-adaptor для макетирования вызовов API.Взгляните на ссылку ниже, где я тестировал вызов axios api с использованием Jest и axios-mock-adapter.

https://codesandbox.io/s/5vq2qv67on

https://github.com/ctimmerm/axios-mock-adapter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...