【问题标题】:NodeJS - Testing model, not receiving callbackNodeJS - 测试模型,不接收回调
【发布时间】:2015-11-09 15:38:25
【问题描述】:

我在 node 中的一些 mocha 测试有问题 - 我正在测试一个模型并调用模型的方法来获得响应 - 只是 Model.findOne 方法。

在主代码库中,它按预期返回(就像在数据库中查询时一样),但是在测试时它无法到达回调并且测试只是超时..请问有什么问题吗?

摩卡的输出:

  1) user model tests check user exists email should equal input: test123@gmail.com:
 Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.

对我来说,这似乎是一个配置问题 - 但我不知道在哪里。

代码如下:

userTest.js

var Chance = require('chance');
var expect = require('chai').expect;
var supertest = require('supertest');
var api = supertest('http://localhost:3000');
var chance = new Chance();
var User = require('../api/models/UserModel').User;

var validUser = {
    email: 'test123@gmail.com',
    password: "123456"
};

describe.only('user model tests', function () {

    describe('check user exists', function () {

        it("email should equal input: " + validUser.email, function (done) {
            User.findOneByEmail(validUser.email, function (err, result) {
                expect(result.email).to.equal(validUser.email);
                done();
            });
        });

    });
});

UserModel.js

UserSchema.statics.findOneByEmail = function(email, callback) {
    this.findOne({email: email}, function (err, user) {

        if (err) {
            return callback(systemError());
        }

        if (!user) {
            return callback(fileNotFoundError());
        }

        return callback(null, user);
    });
};

【问题讨论】:

  • 你能显示User.findOneByEmail函数的列表吗?我认为这可能是麻烦的根源。也许它会抛出错误,并且在此函数上停止执行脚本。
  • 我已经添加进去了。我在代码的其他部分使用了相同的函数,它按预期工作,只是在测试环境中没有得到任何响应。
  • 你应该使用“user.findOneByEmail”,因为你已经在“user”中注入了“User”类。
  • 啊,在我为 SO 做好准备时,这是一个错字。现在更新问题,谢谢。 (但没有任何区别)。
  • 尝试在回调中控制台记录用户对象,可能它没有属性“findOneByEmail”。

标签: javascript node.js


【解决方案1】:

如我所见,您使用的是猫鼬。因此,在开始测试之前,您必须先连接到您的 mongodb。例如,您可以在before 部分进行。

Mongoose connect 函数支持回调。

before(function (done) {
   mongoose.connect('mongodb://localhost/test', done);
});

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2012-03-15
    • 2019-11-25
    • 2016-09-17
    相关资源
    最近更新 更多