【问题标题】:Test express API endpoints with mock data using JEST使用 JEST 使用模拟数据测试 express API 端点
【发布时间】:2019-05-23 09:49:29
【问题描述】:

我正在尝试使用 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);
  });
});

【问题讨论】:

    标签: typescript unit-testing express jestjs


    【解决方案1】:

    首先,您应该模拟此函数以防止实际 API 端点调用(防止请求本身,因为它总是会调用您的 API)。当您模拟您的函数时,您还可以模拟成功或失败的返回值,并将该返回值与您传递给 toBetoEqual 的返回值进行比较(考虑 toEqual 递归比较对象实例的所有属性)。

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

    【讨论】:

    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 2019-04-26
    • 2021-12-10
    • 1970-01-01
    • 2020-02-15
    相关资源
    最近更新 更多