你如何 mock/test requestjs requestcallback with Jest
How do you mock/test requestjs requestcallback with Jest
我正在使用 requestjs 向 API 发出获取请求,然后在 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
}
您可以使用 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
});
我正在使用 requestjs 向 API 发出获取请求,然后在 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
}
您可以使用 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
});