【问题标题】:How to unit test express router calls to a controller如何对控制器的快速路由器调用进行单元测试
【发布时间】:2020-03-31 18:23:34
【问题描述】:

我只是想测试一旦请求 get 路由就会调用 userController。我在 StackOverflow 上看到了其他几个问题,其中接受的答案是使用 supertest,但解决方案通常感觉更像是集成测试而不是单元测试。

我在想这个错误吗?在我编写集成测试时,Express 路由是否应该不进行单元测试而只进行测试?

任何帮助将不胜感激。

controller.js

const userController = {

    get: (req, res, next) => {
        return res.status(200).json('hiding get request from controller')
    }
}

export default userController

routes.js

import express from 'express';
import userController from '../controllers/users';
const userRouter = express.Router();


userRouter.get('/', userController.get)


export default userRouter;

【问题讨论】:

    标签: javascript node.js unit-testing express


    【解决方案1】:

    如果您阅读了supertest documentation
    它指出:超级代理驱动的库,用于使用流式 API 测试 node.js HTTP 服务器。
    因此,您可以将它用于 ubit 测试和集成测试。这甚至在学术层面上也是一个有争议的讨论。作为一个想法:

    单元测试是一种测试方法,通过该方法可以将各个源单元 测试代码以确定它们是否可以使用,而 集成测试检查软件模块之间的集成。

    问题从这里开始。
    例如由不同模块(财务、销售、CRM 等)组成的 ERP 系统
    如果您从高层次上看,这些是模块,并且在系统架构师看来,集成测试是例如财务和 CRM 模块之间的。
    查看财务模块,这些模块是分类帐和成本会计-该级别的集成测试位于这些模块之间。因此,查看分类帐您有一个预订和一个报告模块,所以......

    我们可以假设大多数程序员/开发人员通常接受的唯一事情是单个简单的报告是一个单元,但其余的纯粹是定义和约定 - 无论是在公认标准的水平上还是在组织制定的定义的水平上。
    无论您怎么称呼它,或者您觉得唯一可以确定的是在交付之前测试您的应用程序。

    所以唯一给出“正确”答案的人是你(和你的团队,如果有的话)

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 2017-01-23
      • 2012-04-24
      相关资源
      最近更新 更多