Как вы издеваетесь / тестируете requestjs requestcallback с Jest
Я делаю запрос 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 ответ
Вы можете получить аргументы, которые макет был вызван с помощью 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
});