我是一个新的React测试,我试图通过模拟获取请求来测试我的异步函数。但是,当我运行测试时,它给了我一个假阳性。我期望模拟获取返回模拟数据,但它从数据库返回实际数据。我做错了什么?
下面是我正在测试的实际函数。
export const fetchVisit = async (currentUserId, visitDate) => {
try {
const visitData = await axios.post(
`${BASE_URL}/visit/${currentUserId}`,
visitDate
);
const {
data: {
data: { visit },
},
} = visitData;
return visit;
} catch (err) {
return err;
}
};
这是我的测试套件中的函数
const mockData = [
{
serviceusersToVisit: [[Object], [Object]],
_id: '1',
currentUserId: '123',
__v: 0,
dateOfVisit: '2022-08-31T00:00:00.000Z',
},
];
global.fetch = jest.fn(() =>
Promise.resolve({
json: () => Promise.resolve(mockData),
})
);
describe('MOCK FETCH OF fetchVisit', () => {
it('should fetch a single visit', async () => {
let visitDate = {
dateOfVisit: '2022-08-31T00:00:00.000+00:00',
};
let visit = await fetchVisit('123', visitDate);
console.log(visit);
expect(visit.length).toBe(1);
});
}
1条答案
按热度按时间lf5gs5x21#
您正在使用
axios.post()
发出HTTP请求,您应该模拟axios.post()
方法而不是fetch
。请尝试: