在 Node.js 中为 Restful API 编写单元测试
在 Node.js 中为 Restful API 编写单元测试
写博客还是很累的啊,这东西都花了三个晚上了,累成狗。
贴上地址,欢迎讨论
http://scarletsky.github.io/2016/10/05/write-unit-tests-for-restful-api-in-nodejs/
赞,最近也在研究怎么更好的测试 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 编写单元测试通常使用 Jest
或 Mocha
等测试框架,配合 Supertest
库来模拟 HTTP 请求。下面是一个使用 Jest
和 Supertest
的简单示例。
首先,确保安装了必要的依赖:
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
路由的行为是否符合预期。