javascript - 如何对控制器的快速路由器调用进行单元测试
问题描述
我只是想测试一旦请求获取路由,就会调用 userController。我在 StackOverflow 上看到了其他几个问题,其中接受的答案是使用 supertest,但解决方案通常感觉更像是集成测试而不是单元测试。
我是否在考虑这个错误,并且在我编写集成测试时,Express 路由是否应该不进行单元测试而只进行测试?
任何帮助,将不胜感激。
控制器.js
const userController = {
get: (req, res, next) => {
return res.status(200).json('hiding get request from controller')
}
}
export default userController
路由.js
import express from 'express';
import userController from '../controllers/users';
const userRouter = express.Router();
userRouter.get('/', userController.get)
export default userRouter;
解决方案
如果您阅读了supertest 文档
,它指出:Super-agentdriven library for testing node.js HTTP servers using a fluent API。
因此,您可以将它用于 ubit 测试和集成测试。这甚至在学术层面上也是一个有争议的讨论。作为一个想法:
单元测试是一种测试方法,通过该方法测试各个源代码单元以确定它们是否可以使用,而集成测试则检查软件模块之间的集成。
问题就从这里开始了。
例如,一个由不同模块(财务、销售、CRM 等)组成的 ERP 系统,
如果您从高层次上看,这些都是模块,并且在系统架构师看来,集成测试是例如财务和 CRM 模块之间的。
查看财务模块,这些模块是分类帐和成本会计-该级别的集成测试在这些模块之间。因此,查看分类帐您有一个预订和一个报告模块,所以......
我们可以假设大多数程序员/开发人员通常接受的唯一事情是单个简单的报告是一个单元,但其余的纯粹是定义和约定 - 无论是组织制定的公认标准或定义的级别。
不管你怎么称呼它,或者你觉得唯一可以确定的是在交付之前测试你的应用程序。
因此,唯一给出“正确”答案的人是您(以及您的团队,如果有的话)
推荐阅读
- java - 无法从列表中投射
列出 - kubernetes - Kubernetes:kubeadm 加入主节点失败
- ios - 崩溃:Container.swift 第 242 行 Container.resolve(条目:调用者:)
- node.js - SyntaxError:意外的标识符 PriorityNode.prototype.removeChildren
- java - 需要有关扫描仪错误 java.util.NoSuchElementException 的帮助
- python - 是否有一个 numpy 函数来获取子矩阵的总和?
- angular - 角度如何在标签内使用 If .. then.. else 条件实现 *ngIf?
- postgresql - 如何使用 Ambassador api 网关作为 PostgreSQL 感知代理?
- spring-boot - 在 Spring Boot 应用程序中在运行时更改日志记录级别
- javascript - 简写:如果不是 false 则分配 javascript