node.js - 为 nodeJS express 应用程序编写“if (require.main === module) { app.listen(port); }”测试
问题描述
我正在使用 Express 为 NodeJS 自学 TDD,并且我试图通过首先使用 Jest 编写测试来严格要求。
我真的想不出一种方法来为这个文件“index.js”中的最后 3 行编写测试:
const path = require('path');
const express = require('express');
const app = express();
const port = 3000;
app.get('/test', async (req, res) => {
res.json({message: 'pass!'});
});
app.use(express.static(path.join(__dirname, '../client/public')));
module.exports = app;
if (require.main === module) {
app.listen(port);
}
我不确定为这样的事情编写测试有多重要,但我认为了解如何为上述代码编写测试可能有助于我了解使用节点导入的工作原理。有人有想法吗?
解决方案
测试#1:
- 验证端口 3000 上没有运行任何 Web 服务器。
- 将此模块加载为顶级模块。
- 验证 Web 服务器现在是否在端口 3000 上运行。
- 杀死那个进程。
测试#2:
- 验证端口 3000 上没有运行任何 Web 服务器。
- 将此模块作为子模块从顶级模块加载,该模块除了加载此模块之外什么都不做。
- 确认没有 Web 服务器在端口 3000 上运行。
推荐阅读
- osgi - 在 OSGi DS 服务上使用 @Reference 时组件创建失败
- google-compute-engine - Google Compute API 匿名请求
- vue.js - 如何挂钩 v-currency-field 的 blur 事件?
- python - 关于 scikit-learn 的 IsolationForest 异常分数计算变化的问题?
- firebase-authentication - 如何在 Firebase Auth / Google Identity Platform 中获取每个租户的 MAU?
- r - 用 1 替换许多列的日期,用 0 替换 NA
- substrate - 如何在 Substrate 中更新我的令牌名称?
- sorting - JavaScript 对具有多个数字的函数进行排序
- html - CSS根据屏幕大小上下缩放像素大小
- pine-script - 我的 TradingView 指标正在使用 line.new() 函数在每日图表上添加额外的线