Node.js摩卡testingRestful API端点和代码覆盖率

我一直在享受伊斯坦布尔的乐趣,并尝试其他的Node.js覆盖库,但是我有一个问题。 几乎所有的unit testing都是对我的API的HTTP调用,如下所示:

it('should update the customer', function (done) { superagent.put('http://myapp:3000/api/customer') .send(updatedData) .end(function (res) { var customer = res.body; expect(res.statusCode).to.equal(200); expect(customer.name).to.equal(updatedData.name); done(); }); }); 

而不是实际需要customers.js文件并直接调用updateCustomer 。 testing端点对我来说更有意义,因为它不仅testingupdateCustomer ,而且还testing路由,控制器和其他所有参数。

这工作正常,但问题是,我似乎无法看到任何代码覆盖工具识别这些testing的方法。 伊斯坦布尔还有什么办法可以承认这些摩卡testing吗? 如果不是,那么约定是什么? 你如何testing端点,仍然使用代码覆盖工具?

问题是你使用superagent ,而你应该使用supertest编写unit testing。 如果你使用supertest ,伊斯坦布尔将正确地跟踪代码覆盖率。

一些示例代码让你开始:

 'use strict'; var chai = require('chai').use(require('chai-as-promised')); var expect = chai.expect; var config = require('../../config/config'); var request = require('supertest'); var app = require('../../config/express')(); describe('Test API', function () { describe('test()', function() { it('should test', function(done) { request(app) .get('/test') .query({test: 123}) .expect('Content-Type', /json/) .expect(200) .end(function(err, res){ expect(err).to.equal(null); expect(res.body).to.equal('whatever'); done(); }); }); it('should return 400', function(done) { request(app) .get('/test/error') .query({}) .expect('Content-Type', /json/) .expect(400, done); }); }); });