Node.js “完成方法”;“忽略”;在之前的mochajs测试中

Node.js “完成方法”;“忽略”;在之前的mochajs测试中,node.js,mocha.js,Node.js,Mocha.js,我有一个web套接字客户端包装器的单元测试。以下是测试代码: describe('server', function(){ var server; beforeEach(function(done) { server = new Server(function() { //try to connect to the server on the expected port var socket = new WebSoc

我有一个web套接字客户端包装器的单元测试。以下是测试代码:

describe('server', function(){
    var server;
    beforeEach(function(done) {
        server = new Server(function() {
            //try to connect to the server on the expected port
            var socket = new WebSocket('ws://localhost:8081');
        });

        server.wss.on('connection', function(client) {
            server.wss.close();
            done();
        });
    });
    describe('#server', function(){
        it('starts a server on a given port', function(done) {
            var test = 1;
            test.should.be.ok;
        });
    });
});
我遇到的问题是,虽然正确地调用了done(如果我在第一次调用done之后第二次调用done,我会得到一个错误,它被调用了两次),但它似乎没有任何效果。也就是说,测试将在两秒钟后失败,原因是:

Error: timeout of 2000ms exceeded
我是个新手,所以我可能错过了一些简单的


谢谢,olivier

像往常一样,一旦你发布了问题,你就会找到答案

诀窍是在每个测试中调用done

describe('server', function(){
    var server;
    beforeEach(function(done) {
        server = new Server(function() {
            //try to connect to the server on the expected port
            var socket = new WebSocket('ws://localhost:8081');
        });

        server.wss.on('connection', function(client) {
            server.wss.close();
            done();
        });
    });
    describe('#server', function(){
        it('starts a server on a given port', function(done) {
            var test = 1;
            test.should.be.ok;
=====>      done();
        });
    });
});