与猫鼬连接到图集后如何进行测试
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()
}
});
});
我想测试创建用户,所以在连接到数据库后我想删除所有我测试过的用户,然后我想为测试创建新的用户。(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()
}
});
});