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

时间:2020-07-18 12:13:49

标签: node.js mongodb mongoose mocha mongodb-atlas

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

var data = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3",
};

var myMap = Map<String, dynamic>.from(data);
print(myMap);

create_test.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();
    }
    )
})

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

我想念什么?

1 个答案:

答案 0 :(得分:0)

我的答案之前有一些主题:

异步编码: 如果您不知道/不确定它是如何工作的,我建议您停止并了解它:回调,承诺,异步/等待。

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

测试异步代码:在您了解回调函数之后,您可以了解到done()是允许完成当前异步操作的回调函数。功能并传递到下一个异步。功能。

testUser.save()返回一个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()
}
    });
});