Jest单元测试-异步函数中异步函数的模拟值



在我的React项目中,我正在单元测试一个调用另一个异步函数的异步函数。

//SomeComponent.js
getAllJobs = async () => {
var allJobStatuses = new Array();
for(var endpointForRegion in this.props.regionalEndpointsMap) {
let jobStatusesForRegion = await getJobStatuses(endpoint);
allJobStatuses = allJobStatuses.concat(jobStatusesForRegion);
....
}
return allJobStatuses;
}
getJobStatuses = async (endpoint) => {
const response = await fetch(endpoint, {
......
return await response.json();
}
//SomeComponentTest.js
describe('<SomeComponent />', () => {
....
beforeEach(() => {
props = {regionalEndpointsMap: {
'region1': 'region1ep',
'region2': 'region2ep'
}};
wrapper = shallow(<SomeComponent {...props} />);
});
it('should get jobs for all regions', async () => {
var startTime = new Date();
let mockdata = {[
{
jobId: 'id',
}
]};
jest.spyOn(wrapper.instance(), 'getJobStatuses').mockResolvedValue(data);
let allJobs = wrapper.instance.getAllJobs();
let expectedData = [
{jobId:'id'},
{jobId:'id'}
];
expect(allJobs).toEqual(expectedData);
}

尽管每次测试时,结果都只是一个空的Promise{},而不是预期的Data。我已经尝试了许多我在网上找到的模拟异步"getJobStatues"函数结果的实现,但没有成功(显示了我在这里使用的实现。为了测试调用它的函数(getAllJobs(,模拟这个函数的结果的正确方法是什么

由于getAllJobsasync,它将返回一个promise。你是说await这里的承诺吗?

let allJobs = await wrapper.instance.getAllJobs();

最新更新