摩卡testing失败,“MongoError:服务器套接字closures”

我的摩卡testing失败:

MongoError:服务器XXXX套接字closures

我有一个解决方法如何解决它们:

const https = require('https'); const server = https.createServer(..); close() { mongoose.disconnect(); // <-------- I will comment this line this.server.close(); }; 

我会注释掉mongoose.disconnect(); 和我的testing套件开始工作。 我也想在我的testing后清理。 我的每个testing文件都重新创build服务器,并从头开始。 似乎错误出现了,因为在下一个testing文件执行之前需要有一些“等待”。

我怎样才能纠正这个错误?

解决scheme – 船长胡克去救援!

如果我理解正确,您希望在testing后启动并清理您的服务器。 在每次testing之前和之后,您还需要执行一系列重复的任务。

摩卡拥有完美的解决scheme: 向胡克先生问好!

霍克船长

摩卡挂钩是可以在所有testing之前,在所有testing之后,或在每次testing之前以及在每次testing之后运行的function:

文档是相当完整的,我真的推荐它。 我的情况,但是,因为你正在处理数据库,你可能会处理async挂钩。

听起来很复杂? 别担心!

这是正常的sync钩子是如何工作的:

 describe('hooks', function() { before(function() { // runs before all tests in this block }); after(function() { // runs after all tests in this block }); beforeEach(function() { // runs before each test in this block }); afterEach(function() { // runs after each test in this block }); //tests it("This is a test", () => { assert.equal(1, 1); }); }); 

async钩子只有一个区别:它们有一个done的参数,一旦你的任务完成就调用它。 让我们假设我们正在build立一个需要1.5秒钟设置的数据库。 我们希望在所有的testing之前做到这一点,我们只想做一次。

让我们假设这是我们的DB的listen函数:

 const listen = callback => { setTimeout(callback, 1500); }; 

所以在1.5秒之后,它会调用callback函数来表明它已经准备好了。

现在让我们看看我们将如何做一个async挂钩:

 describe('hooks', function() { let myDB; before( done => { myDB = newDB(); myDB(done); }); //tests }); 

而就是这样! 希望能帮助到你!