Смоделировать вызов функции API внутри маршрута, фактически не вызывая его - PullRequest
0 голосов
/ 30 марта 2019

В моем API есть маршрут, который вызывает другой сервер, и я столкнулся с проблемой, когда я не могу проверить, смоделировать разрешенное значение для этого вызова другого сервера. Модульный тест, кажется, всегда вызывает другой сервер, независимо от того, как я к этому подхожу.

    let iAgent: PartialMock<InternalAgent>;

    beforeEach(() => {
        iAgent = {
            extend: jest.fn()
        };
    });
if(iAgent.extend) {
    iAgent.extend.mockResolvedValue({});
}

const r = await request.post('/api/v1/webhooks/extend')
.send({
    id: 1
});
expect(r.status).toEqual(200);
expect(iAgent.extend).toBeCalledTimes(1);

и внутри моего фактического маршрута он вызывает это каждый раз:

await iAgent.extend();

и происходит сбой в этой строке, так как другой сервер не работает, и я получаю сообщение об отказе в соединении. Очевидно, что функция iAgent.extend даже не вызывается один раз, но все же удается вернуть отклонение.

Таким образом, я уверен, что он не должен вызывать реальную функцию в моем маршруте и пропускать ее, возвращаясь к моему разрешенному значению в тесте, если я правильно понимаю, однако это не так, и я не уверен, как продолжить.

Да, и просто для ясности по поводу проверки if для моего mockResolvedValue, то есть просто для того, чтобы на данный момент избежать строгих проверок нуля в моей конфигурации. Но я вошел в условную систему, и она высмеивает значение

1 Ответ

0 голосов
/ 30 марта 2019

О, парень, я скучал по этому. Проблема заключалась в том, что мои маршруты использовали один и тот же экземпляр класса во всем приложении, а мой модульный тест пытался смоделировать другой его экземпляр, поэтому разрешенное значение не использовалось в функции маршрута при вызове другого сервера. .

Так что, просто используя тот же экземпляр этого класса агента, я смог легко получить моё смоделированное значение

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