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

标签 node.js express mongoose mocha.js

我目前在单元测试期间尝试对数据库进行 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/

相关文章:

mysql - 在一对多关联的 CREATE 期间出现 Sequelize 错误 "Unknown column in ' 字段列表'"

node.js - Redis 的 Nodejs 对象文档模型

javascript - 如何连续搜索现有文档并相应地修改/添加每个文档?

node.js - 如何在分组后对数组值进行排序 - mongodb

node.js - 在 node.js : How to convert jpg images to binaries data?

javascript - 以中间件的形式表达 Try and Catch

node.js - 我应该如何存储由 RESTful API 生成的 token ?

node.js - iisnode 的权限和请求

javascript - 如何从 Mongo 中的数组中删除元素

node.js - nextjs做一个API请求正常吗?