在我的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 {}而不是ExpectedData。 我尝试了许多在线发现的实现,这些实现都是模拟async'getJobStatuses'函数的结果而没有运气(显示我从here使用的实现。这是模拟结果的正确方法是什么?函数,用于测试调用它的函数(getAllJobs)
答案 0 :(得分:0)
由于getAllJobs
是async
,它将返回一个承诺。您是要await
这里的诺言吗?
let allJobs = await wrapper.instance.getAllJobs();