【发布时间】:2018-11-17 20:03:21
【问题描述】:
我有一个 NodeJS 应用程序,它连接到 Mongo 数据库,然后在建立连接后初始化所有路由。我想添加一些使用服务器的 Mocha 测试和 supertest 用于测试请求。但是,要从test.js 文件中检索服务器,我需要require() 主文件并从中获取服务器变量。但是,当我尝试使用它时,它会抱怨该变量未定义,因为尚未加载数据库并且尚未初始化路由。
main.js (extract)
// This is a custom mongo module that connects using my db string
// It stores the DB as a variable in another file, which is later retrieved by the route handlers using mongo.GetDB()
mongo.ConnectToDB(function(err, dbo){
if(err) throw err;
require("./api")(app);
require("./admin")(app);
require("./routes")(app);
});
// This obviously doesn't work, as it's outside of the callback
module.exports.server = app.listen(4500);
server.test.js (extract)
describe("loading express", (done) => {
let server;
beforeEach(() => {
// The server is returned, but none of the routes are included
server = require("../main").server;
});
afterEach(() => {
server.close();
});
// ...
});
有什么方法可以等待数据库和路由初始化在server 变量被检索并且Mocha 测试继续?
【问题讨论】:
-
我怎么没想到!谢谢你的帮助,我会看看我能做些什么。
-
您能否将其添加为答案,以便我可以将其标记为已回答@CertainPerformance
标签: javascript node.js express callback mocha.js