unit-testing - 使用 JEST 测试快速路线

标签 unit-testing express jestjs

我想用 JEST 测试我的快速 API 端点。

下面是我的 Express API 代码。

溃败.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,使用 Mock 而不发出 API 请求

所以我手动创建了一个模拟响应,需要用它来验证代码。

模拟.ts
export const releaseNotesMockData = {
  'results': [
    {
      'id': '206169942',
      'type': 'page',
      'status': 'current',
      'title': 'Release 2018-10-18 Full Flow CM00294965',
    }]
};

使用下面的代码,我点击了真正的 API 并且测试通过了
describe('Test a 200', () => {
    test('It should respond with a 200 status', async () => {
      const response = await request(app).get('/release-notes');
      expect(response.statusCode).toBe(200);
    });
  });

问题是,我不想使用真正的 API 进行测试,而是想使用 Mocks 进行测试。

下面是我尝试过的代码,但它不起作用。请帮忙

routs.test.ts
describe('api test', () => {
  const url = '/release-notes';
  it('user GET should be 200', async () => {
    const result = await http({
      url,
      method: 'get'
    });
    expect(result).toBe('200');
  });
});

最佳答案

问题是你没有 mock request您正在导入的模块。

https://jestjs.io/docs/en/tutorial-async有关模拟的详细信息。

关于unit-testing - 使用 JEST 测试快速路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53908027/

相关文章:

unit-testing - Typescript:如何禁用spec.ts文件生成?

node.js - 如何在 Express 中设置具有任意起始路径的静态服务?

node.js - 用 Jest 测试 process.env

angular - karma : How to debug a RangeError: Maximum call stack size exceeded?

java - Maven-surefire-plugin 测试在 Jenkins 构建中失败但在本地运行成功?

c# - asp.net core 中的 TryValidateModel 在执行单元测试时抛出空引用异常

javascript - NodeJS,Express与Socket.io交互

javascript - 流式传输不同语言的 mp4 视频 (ExpressJs)

jestjs - 无法使用 ts-jest 转换 node_modules 中的文件夹

reactjs - 无法测试样式为显示 : none 的元素