摩卡chai-http响应总是返回null

我正在通过mocha chai-httptestingNode.js中的服务器响应。 我得到的回应始终为空 。 但是,当我没有摩卡testing亚军定期运行请求,一切都很好。

这是服务器的代码:

var Babble = { messages: new Array() , users: new Array(),userCount:0 }; // var http = require('http'); var urlUtil = require('url'); var queryUtil = require('querystring'); var Babble = { messages: new Array() , users: new Array(),userCount:0 }; // Data object to save all chat logs var server = http.createServer(function(request, response) { var strData,name,index; response.setHeader('Access-Control-Allow-Origin', '*'); if (request.method === 'GET') { var url = urlUtil.parse(request.url); var data = queryUtil.parse(url.query); console.log(data.message); if (!data.message) { response.writeHead(400); } response.end(); } else if (request.method === 'POST') { var requestBody = ''; request.on('data', function(chunk) { requestBody += chunk.toString(); }); request.on('end', function() { var data = queryUtil.parse(requestBody); strData = JSON.stringify(data); // Handle different requests ... response.end(JSON.stringify(Babble)); } }); }); module.exports = {server,Babble}; 

这是摩卡chai-httptesting代码:

 var module = require('./testedServer'); var assert = require('assert'); var chai = require('chai') , chaiHttp = require('chai-http'); chai.use(chaiHttp); describe('Check receiving data from server:', function() { beforeEach(function() { module.server.listen(9099); }); it('Should receive a non-null object containing the chat logs', function(done) { chai.request('http://localhost:9099') .post('/') .send( 'poll0,0/Annonymous.' ).end(function(res){ console.log(res); assert.equal(res != null,true,"Error: test has failed - server response is null"); done(); }); }); afterEach(function() { // runs after each test in this block module.server.close(); }); }); 

我想我发错了这个请求。

chai.end使用标准的err第一个callback风格。 在chai-http文档中看到这个例子。

在你的testing代码中,包括err首先应该修复你的问题。

 ).end(function(err, res){ // err first callback 

就编写一个体面的最小testing而言,您可能至less需要一个断言(或it ):

  • err:例如assert.equal
  • res:res对象的一些属性,例如res.statusCode

outlook未来,首先会有错误的callback。 从这里开始一个简单的解释。