使用JEST

时间:2018-12-24 06:26:24

标签: typescript unit-testing express jestjs

我试图使用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);
  });
});

1 个答案:

答案 0 :(得分:0)

首先,您应该模拟该函数,以防止实际的API端点调用(阻止请求本身,因为它将始终在调用您的API)。模拟函数时,还可以模拟成功或失败的返回值,并将该返回值与您为toBetoEqual传递的返回值进行比较(考虑到等于以递归方式比较对象实例的所有属性) )。

然后,我不确定这是一个有效的测试,因为您正在传递结果,并且期望其结果等于自身。当然,它总是可以通过测试。 如果要实际检查是否已调用函数,可以使用.toHaveBeenCalled()