与猫鼬连接到图集后如何进行测试

How to do test after connection with mongoose to atlas

我想测试创建用户,所以在连接到数据库后我想删除所有我测试过的用户,然后我想为测试创建新的用户。(Mocha) test_helper.js

mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true });
mongoose.connection
    .once('open', () => {
        console.log("connected")
    })
    .on('error', (error) => {
        console.warn('Warning', error)
    });

beforeEach((done) => {
    mongoose.connection.collections.users.drop(() => {
        done();
    }
    )
})

create_test.js

describe('Creating', () => {
    it('saves a user', () => {
        const testUser = new User({ name: 'Test' });
        testUser.save();
    });
});

我收到下一个错误 错误:超时超过 2000 毫秒。对于异步测试和挂钩,确保调用“done()”;如果返回 Promise,请确保它已解析。

我错过了什么?

我回答之前的一些主题:

异步编码: 如果您不知道/不确定它是如何工作的,我建议您停下来了解一下:回调、Promises、async / await。

测试: 基本上流程是:创建一些场景并断言一些情况,例如附加代码。我创建了一个用户并测试了它是否真的有效。

测试异步代码: 看了回调函数你就明白done()是一个允许完成当前异步的回调函数。函数并传递给下一个异步。功能。

testUser.save() returns 一个 Promise 而你没有处理它。

...
testUser.save().then(()=>{
assert(testUser.isNew === false)
done();
} 
...

它应该可以工作,但如果你想一个接一个地测试某些场景,你应该处理它。

describe('Creating', () => {
    it('some test', (done) => {
// some logic
done()
}
    it('another test', (done) => {
// some logic
done()
}
    });
});