mocha 'after' 失败说找不到 'app'

mocha 'after' fails saying it can't find 'app'

好的,如果我注释掉 'before' 和 'after' 方法,我的 mocha 测试就会通过。我确信我的两个错误是相互关联的。

'after' 方法失败,说明 app.close 不是函数。 'before' 方法无法在我的第 7 行(清除服务器缓存)上找到 'app'。

我完全没有选择或想法。我希望能够按照我的命令启动和停止我的服务器。这是我第一次尝试在我的 mocha 测试中包含任何类型的 'before/after' 方法。下面的工作代码,但我的失败部分被注释掉了。有什么建议吗??

var request = require('supertest');
var app = require('../../server');

describe('server', function() {
    before(function () {
        //var app = require('../../server')();
        //delete require.cache[require.resolve('app')];
    });
    after(function () {
        //app.close();
    });
    describe('basic comms', function() {
        it('responds to root route', function testSlash(done) {
            request(app)
                .get('/')
                .expect('Content-type', /json/)
                //.expect(res.message).to.equal('Hello World!')
                .expect(200, done);
        });
        it('404 everything else', function testPath(done) {
            //console.log('testing 404 response');
            request(app)
                .get('/foo/bar')
                .expect(404, done);
        });
    });
});

before 中,您以不同于第 2 行的方式要求您的应用程序。为什么不使用已经要求的应用程序?

示例:

before(function () {
    // here you can use app from line 2
});

关于app.close,你是从哪里找到这个功能的?

查看 Express 文档: http://expressjs.com/en/4x/api.html#app

要关闭 express 服务器,可以使用这种方法:

how to properly close node-express server?