我试图使用JEST使用Mockdata测试我的Express API端点。
下面是我的Express API端点,它将向我返回数据。
api-routes.ts
// Get release notes
routes.get('/release-notes', (req, res) => {
request.get({
url: 'https://host.com/rest/api/content/search?cql=parent=209266565',
json: true
})
.pipe(res);
});
export default routes;
下面是我的验证测试代码,无论我的API是否返回数据。
问题是,我没有检查API调用,请帮助我更正我的代码
api-routes.test.ts
describe('Test API', () => {
test('It should retun data', () => {
const releaseNotesMockData = {
'results': [
{
'id': '206169942',
'type': 'page',
'status': 'current',
'title': 'Release 2018-10-18 Full Flow CM00294965',
}]
};
const response = jest.fn().mockReturnValue(releaseNotesMockData)
expect(response).toBe(response);
});
});
答案 0 :(得分:0)
首先,您应该模拟该函数,以防止实际的API端点调用(阻止请求本身,因为它将始终在调用您的API)。模拟函数时,还可以模拟成功或失败的返回值,并将该返回值与您为toBe
或toEqual
传递的返回值进行比较(考虑到等于以递归方式比较对象实例的所有属性) )。
然后,我不确定这是一个有效的测试,因为您正在传递结果,并且期望其结果等于自身。当然,它总是可以通过测试。
如果要实际检查是否已调用函数,可以使用.toHaveBeenCalled()
。