我有一个node.js模块,HTTP发出JSON请求,
我想测试正确的url,标头,请求正文以及请求是否实际执行。
我正在使用Mocha作为测试框架。我该如何测试?
答案 0 :(得分:1)
您可以使用nock。你可以拦截http请求和某些属性
答案 1 :(得分:0)
我已经将Sinon.js用于此类事情。
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)
简化测试MyHttpClient类将请求对象作为构造函数的参数。如果没有提供,它只使用require'request'。
答案 2 :(得分:-1)
与SuperTest结合使用superagent。来自express的所有测试都是用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);
})
})