双回调! Node.js Chai

时间:2016-10-12 12:14:33

标签: javascript node.js mocha chai

此代码抛出双回调!错误后跟:

  

TypeError:无法读取未定义的属性“status”       在Assertion。 (node_modules \柴\ lib中\柴\核心\ assertions.js:890:14)       在Assertion.ctx。(匿名函数)[作为属性](node_modules \ chai \ lib \ chai \ utils \ addMethod.js:41:25)       在Assertion。 (node_modules \齐HTTP \ lib中\ http.js:80:38)       在Assertion.ctx。(匿名函数)[作为状态](node_modules \ chai \ lib \ chai \ utils \ addMethod.js:41:25)       在tests \ unitTest \ helloWorld.js:16:37       在Test.Request.callback(node_modules \ chai-http \ node_modules \ superagent \ lib \ node \ index.js:615:12)       在ClientRequest。 (node_modules \齐HTTP \ node_modules \的SuperAgent \ lib中\节点\ index.js:567:10)       在Socket.socketErrorListener(_http_client.js:269:9)       在emitErrorNT(net.js:1269:8)

错误看起来是随机的,有时候有时不会发生。

 var chai = require('chai')
        , chaiHttp = require('chai-http');
    chai.use(chaiHttp);

    var assert = require('assert');
    var expect = chai.expect;
    require('should-http');
describe('Array', function() {
    describe('#indexOf()', function() {
        it('should return -1 when the value is not present', function(done) {
            //assert.equal(-1, [1,2,3].indexOf(4));
            //console.log("x")
            chai.request('http://192.168.99.100:8080').get('/hello').end(function (err, res) {
                expect(res).to.have.status(200);
                res.text.should.equal('hello world2');
                done();
            });
        });
    });
});

文档:https://github.com/chaijs/chai-http

2 个答案:

答案 0 :(得分:0)

我看不到双重回调!您在堆栈跟踪中提到的错误。你有可能忘了复制一些东西吗?对我来说,感觉更多的是服务器超时并且你得到了超时错误,并且因为你得到超时,res var在回调中是未定义的,然后因为你试图访问未定义的var而中断。您可以尝试增加测试的超时时间:

this.timeout(4000);

并在回调中放入一些console.log以查看它的打印内容。另外,请确保,如果您运行多个测试,那么在运行其他测试之前,服务器不会崩溃。

答案 1 :(得分:0)

事实证明问题是每次更新服务器重新启动文件的新版本时,有时地址/端口不可用:

-Error listen:EADDRINUSE ::: 5858