Express server.close()给出了;“服务器未运行”;在每个摩卡钩子里
我试图用mocha运行一个测试套件,目标是在每个测试用例之前启动服务器,然后 在每个测试用例之后关闭它 但由于某些原因,当每个案例点燃后,我得到以下错误: 错误[服务器未运行]:服务器未运行 测试用例通过,这意味着服务器已启动并正在运行 我从app.js文件中导出服务器,如下所示:Express server.close()给出了;“服务器未运行”;在每个摩卡钩子里,express,mocha.js,Express,Mocha.js,我试图用mocha运行一个测试套件,目标是在每个测试用例之前启动服务器,然后 在每个测试用例之后关闭它 但由于某些原因,当每个案例点燃后,我得到以下错误: 错误[服务器未运行]:服务器未运行 测试用例通过,这意味着服务器已启动并正在运行 我从app.js文件中导出服务器,如下所示: var server = app.listen(3000, function () { var port = server.address().port; console.log("Example
var server = app.listen(3000, function () {
var port = server.address().port;
console.log("Example app listening at port %s", port);
});
module.exports = server; // Export server in order to use it in test files
我的测试文件:
describe("loading express", function () {
var server;
before(function (done) {
User.deleteMany(done);
});
beforeEach(function () {
server = require("../app");
});
afterEach(function (done) {
server.close(done);
});
describe("Create user account with valid email address", function () {
describe("Route: POST /signup", () => {
it("201 HAPPY PATH", (done) => {
chai
.request(server)
.post("/signup")
.send({
email: "test23222@test.test",
password: "12345678",
firstname: "testtest",
lastname: "testtest",
})
.end((err, res) => {
res.should.have.status(201);
done();
});
});
});
});
});
我相信我需要出口一个承诺
到目前为止,我得到的是:
var server = new Promise(function (resolve, reject) {
app.listen(3000, function () {
var port = server.address().port;
console.log("Example app listening at port %s", port);
resolve();
});
}
module.exports = server; // Export server in order to use it in test files
in test suite:
var server = require('./app.js')
server.then(function() {
....
}
为什么您认为
server=await require(“../app”)
会等待服务器启动async/await
仅适用于承诺。此外,require
将缓存模块。除非您以某种方式劫持了模块加载算法,否则在每次之前在内部执行该操作是没有意义的。在复制和复制另一个实验之前,wait/async是一个输入错误,现已删除。好吧,但为什么您仍然希望服务器在您需要它之后立即侦听端口。你的考试可能会提前结束。在继续测试之前,您需要提供一些等待服务器完成“侦听”过程的方法。我遵循了以下指南:但我想我需要在某个地方添加一个承诺。。。