在 Node.js 中为 Restful API 编写单元测试

在 Node.js 中为 Restful API 编写单元测试
写博客还是很累的啊,这东西都花了三个晚上了,累成狗。
贴上地址,欢迎讨论
http://scarletsky.github.io/2016/10/05/write-unit-tests-for-restful-api-in-nodejs/

13 回复

赞,最近也在研究怎么更好的测试 rest api


wow 好文章!

superagent 不仅在测试中非常好用,在实际前端中用来做 XHR 也是很好的。

superagent 和 fetch 比呢?

貌似 SuperAgent 的扩展比较好。

我比较喜欢 superagent 的写法。

感觉 superagent 的封装程度要比 fetch 高,有些地方会方便点,并且只要测试 OK ,那用起来基本上就 OK 。

但是在 react native 下面,我用 fetch ,我想想当时为什么。。。

用 fetch 肯定是为了刷时髦值

应该是两个原因 第一个是当时我 thunk 和 super agent 哪里没写好 出了奇怪的问题……

另外就是 react native 官方推荐的 fetch ……

我认为 fetch 可能是未来 有可能会出现很多优秀的基于此的封装

奇怪的是我希望 elm 能成为主流

但 elm 注定只能在小圈子中使用啊…

楼主博客的搜索,是 404

我是用别人的模板的,没用过那搜索功能诶

在 Node.js 中为 RESTful API 编写单元测试通常使用 JestMocha 等测试框架,配合 Supertest 库来模拟 HTTP 请求。下面是一个使用 JestSupertest 的简单示例。

首先,确保安装了必要的依赖:

npm install --save-dev jest supertest

假设我们有一个简单的 Express 应用 app.js

const express = require('express');
const app = express();

app.get('/api/hello', (req, res) => {
  res.json({ message: 'Hello, world!' });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

然后,编写测试文件 app.test.js

const request = require('supertest');
const app = require('./app'); // 确保导入了正确的 express 应用实例

describe('GET /api/hello', () => {
  it('should return 200 and JSON response', async () => {
    const response = await request(app).get('/api/hello');
    expect(response.statusCode).toBe(200);
    expect(response.body).toEqual({ message: 'Hello, world!' });
  });
});

package.json 中添加 Jest 配置(如果尚未添加):

"scripts": {
  "test": "jest"
}

最后,运行测试:

npm test

这将启动 Jest 测试框架,并运行你编写的测试,验证 /api/hello 路由的行为是否符合预期。

回到顶部