我正在使用requestjs向API发出get请求,然后在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
}
答案 0 :(得分:0)
您可以使用mockFn.mock.calls
获得调用了模拟程序的参数。
在这种情况下,request.get
是一个模拟函数(因为整个request-promise-native
是auto-mocked),因此您可以使用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
});