Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mocha chai http响应始终返回null_Javascript_Node.js_Mocha.js_Chai_Chai Http - Fatal编程技术网

Javascript Mocha chai http响应始终返回null

Javascript Mocha chai http响应始终返回null,javascript,node.js,mocha.js,chai,chai-http,Javascript,Node.js,Mocha.js,Chai,Chai Http,我正在通过mocha chai http测试Node.js中的服务器响应。 我得到的响应总是空的。然而,当我在没有mocha test runner的情况下定期运行请求时,一切都很好 这是服务器代码: var Babble = { messages: new Array() , users: new Array(),userCount:0 }; // var http = require('http'); var urlUtil = require('url'); var queryUtil

我正在通过mocha chai http测试Node.js中的服务器响应。 我得到的响应总是空的。然而,当我在没有mocha test runner的情况下定期运行请求时,一切都很好

这是服务器代码:

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};
这是mocha chai http测试代码:

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
第一个回调样式。请参阅http文档中的示例

在您的测试代码中,包括
err
应该首先解决您的问题

).end(函数(err,res){//err第一次回调
就编写适当的最小测试而言,您可能需要至少一个断言(或
it
),用于:

  • 错误:例如,
    assert.equal
  • res:res对象的某些属性,例如

展望未来,错误优先回调会写入负载。请开始简单解释。

我认为人们可能已经被“文本墙”关闭,因此需要4小时的响应时间。然而,在这种情况下,最小的示例只是有点长。如果没有完整的示例,就不会发现问题。