在单元测试期间尝试对数据库进行猫鼬查询时,我目前遇到问题。我试图让用户使用该特定测试的数据。理想情况下,如果有解决方案,我可以在每个钩子之前将其分支为a,但是目前我没有尝试从数据库返回对象。
我的测试套件
let assert = require('assert');
let request = require('supertest');
let mongoose = require('mongoose');
let User = require('../app/models/User');
it('should be able to update a user', function (done) {
User.findOne({email: 'example@email.com'})
.then(user => {
console.log(user);
done();
}).catch(done);
});
after((done) => {
done();
});
});
我当前收到此错误:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (E:\DWA\express-mvc\test\test.js)
我无法进行足够远的查询来测试检索用户或实际代码本身是否存在问题。
我有这样运行的测试:
request(url)
.post('/login')
.send({email: 'example@email.com', password: 'password'})
.expect(302)
.end(function (err, res) {
if (err) {
throw err;
}
done();
});
但是我不确定如何仅通过单个查询来检索数据库而仅使用一条通往控制器的路由来连接数据库
答案 0 :(得分:0)
您遇到的问题是您试图在未连接到数据库时调用findOne。
您可以在运行任何Mocha测试之前初始化软件系统。例如,连接数据库。
// ROOT HOOK Executed before the test run
before(async () => {
// connect to the database here
});
// ROOT HOOK Excuted after every tests finished
after(async () => {
// Disconnect from the database here
});