如何用mochatestingnode.js http客户端?

我有一个node.js模块,HTTP POST一个JSON请求,

我想testing正确的url,标题,请求正文,并且实际执行请求。

我正在使用Mocha作为testing框架。 我如何testing它?

你可以使用nock 。 你可以拦截http请求和某些属性

我已经使用Sinon.js这种types的东西。

sinon = require 'sinon' assert = require "assert" describe 'client', -> describe '#mainRequest()', -> it 'should make the correct HTTP call', -> url = "http://some.com/api/blah?command=true" request = {} sinon.stub request, 'get', (params, cb) -> cb null, { statusCode: 200 }, "OK" client = new MyHttpClient request client.sendRequest() assert.ok request.get.calledWith(url) 

为了简化testing,MyHttpClient类将一个请求对象作为构造函数的参数。 如果没有提供,它只是使用require'request'。

尝试SuperTest结合superagent 。 所有来自Express的testing都是用SuperTest写的。

例如:

 var request = require('supertest') , express = require('express'); var app = express(); app.get('/user', function(req, res){ res.send(201, { name: 'tobi' }); }); describe('GET /users', function(){ it('respond with json', function(done){ request(app) .get('/user') .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(200, done); }) })