Как вы издеваетесь / тестируете requestjs requestcallback с Jest - PullRequest
0 голосов
/ 11 января 2019

Я делаю запрос get к API, используя requestjs, а затем в requestCallBack отображаю тело в пользовательский объект json. Я пытаюсь протестировать этот код с помощью Jest, но, как бы я его не издевался, он не работает

Я попытался request.get.mockImplementation(), и это, кажется, только издевается над get и не позволяет мне проверить код в обратном вызове

    await request.get('endpoint', requestOptions, (err, res, body) => { transformBodyContent(body) })
    jest.mock('request')
    jest.mock('request-promise-native')

    import request from 'request-promise-native'

    test('test requestCallback code', async () => {
        // not sure how to test that bodyTransformer is called and is working
    }

1 Ответ

0 голосов
/ 11 января 2019

Вы можете получить аргументы, с которыми был вызван макет, используя mockFn.mock.calls.

В этом случае request.get является фиктивной функцией (поскольку все request-promise-native было автоматически смоделировано ), поэтому вы можете использовать request.get.mock.calls, чтобы получить аргументы, с которыми она была вызвана. Третьим аргументом будет ваш обратный вызов, так что вы можете получить его, а затем проверить его следующим образом:

jest.mock('request-promise-native');

import request from 'request-promise-native';

test('test requestCallback code', () => {
  request.get('endpoint', requestOptions, (err, res, body) => { transformBodyContent(body) });

  const firstCallArgs = request.get.mock.calls[0];  // get the args the mock was called with
  const callback = firstCallArgs[2];  // callback is the third argument

  // test callback here
});
...