gpt4 book ai didi

node.js - 在 Mocha 测试期间尝试进行 Mongoose 查询时 promise 超时

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:35 24 4
gpt4 key购买 nike

我目前在单元测试期间尝试对数据库进行 Mongoose 查询时遇到问题。我试图让用户使用该特定测试的数据。理想情况下,如果有一个解决方案,我可以将其分支到每个钩子(Hook)之前,但目前我没有尝试从数据库返回对象。

我的测试套件

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

但我不确定如何连接到数据库只是为了单个查询来检索用户,而不是使用我的 Controller 路由之一

最佳答案

您遇到的问题是,您在未连接到数据库时尝试调用 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
});

关于node.js - 在 Mocha 测试期间尝试进行 Mongoose 查询时 promise 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54039605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com