我现在用mocha和supertest进行API测试,存在如下问题:
- 数据难以隔离;为了测试订单相关接口,需要先填充商品类目,属性,商品列表等等数据。如果不隔离,上游的变动又会对测试产生影响
- 代码量很大;不管是用那种异步模型,测试代码量至少是功能代码的3倍以上
关于RestfulAPI接口测试,大家有没有什么经验分享?
来自酷炫的 CNodeMD
难以避免复杂的逻辑需要先填充数据,甚至模拟前面部分流程以测试后面流程。 测试代码多是事实,且不得不做,如果不写单元测试,后面功能改动很可能不知不觉导致功能不可用了。 为了有效测试,队列,数据库,api都得按照真实的架好才做单元测试。最多写些工具函数方便写接口提高下效率。
难道不mock?加个测试环境变量,判断一下,用mock方法测试数据啊。。。
我自己有项目,包含【文档】【测试】【mock】,测试部分数据模拟使用的是faker 😈
mock 和 stub 是基本方法,工具选择看个人.
我的做法是利用 https://www.npmjs.com/package/restspec 之后api的集成测试让用例之间保持依赖关系,后面的测试依赖前面的测试,新加的测试一律加到尾部。 这样整个api测试下来不需要过多的mock,简化了测试用例的复杂度。 具体做法参考我的一个样本工程 https://github.com/open-node/open-rest-es6-boilerplate ./specs 下就是api测试用例的写法。
有问题随时联系我。手把手教你。我这套玩法有一些弊端,就是每个用例之间不是隔离的,但是好处也是大大的,测试用例写起来非常轻松。