单元/集成测试 Express REST API, mongoose, mocha, sinon, chai, supertest
Posted
技术标签:
【中文标题】单元/集成测试 Express REST API, mongoose, mocha, sinon, chai, supertest【英文标题】:Unit/Integration testing Express REST API, mongoose, mocha, sinon, chai, supertest 【发布时间】:2015-06-02 19:07:16 【问题描述】:我对使用 mongoose 对 Express REST API 进行单元测试感到很困惑。 我听说过 supertest、sinon、chai 和 mocha。
我想写测试到:
1) 测试API接口:
创建一个超级测试服务器并在其上发出请求(例如 GET /users、POST /users)并检查它是否调用了正确的路由。
2) 测试猫鼬查询:
当调用路由时,我想检查是否调用了正确的 mongoose 函数(find、findById)以及它是否返回了正确的数据(假数据),例如:
当调用 User.findId 时,返回假用户(在 beforeEach 中定义的数据)。 这是 sinon 存根的用途吗?
3) 集成测试: 创建一个测试数据库(在测试运行时创建),填充它并在测试完成时清理它。 在超测服务器上进行 API 调用(GET 用户、PUT 用户/1202082、DELETE 用户/1202082...),并检查是否读取、创建、更新、删除了正确的数据...
这是要走的路吗? 每个案例的简单示例会非常好!
【问题讨论】:
【参考方案1】:如果您想要测试某些猫鼬模型的static's
和method's
,我建议您使用sinon 和sinon-mongoose。 (我猜它与chai兼容)
这样,您无需连接到 Mongo DB 并轻松返回虚假数据。
您可以在 sinon-mongoose 存储库中找到工作(和简单)示例。
【讨论】:
以上是关于单元/集成测试 Express REST API, mongoose, mocha, sinon, chai, supertest的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 集成测试中最好地存根/模拟 rest API 调用
如何使用 Advanced REST Client 或 Postman 测试 Express/node REST API 后端?
使用 PayPal REST API 通过 Express Checkout 测试拒绝付款