首页 > 解决方案 > 为 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);
}

我不确定为这样的事情编写测试有多重要,但我认为了解如何为上述代码编写测试可能有助于我了解使用节点导入的工作原理。有人有想法吗?

标签: node.jsexpressjestjs

解决方案


测试#1:

  • 验证端口 3000 上没有运行任何 Web 服务器。
  • 将此模块加载为顶级模块。
  • 验证 Web 服务器现在是否在端口 3000 上运行。
  • 杀死那个进程。

测试#2:

  • 验证端口 3000 上没有运行任何 Web 服务器。
  • 将此模块作为子模块从顶级模块加载,该模块除了加载此模块之外什么都不做。
  • 确认没有 Web 服务器在端口 3000 上运行。

推荐阅读