NodeJS-测试模型,不接收回调
NodeJS - Testing model, not receiving callback
我在node中遇到了一些mocha测试的问题-我正在测试一个模型并调用该模型的方法来获得响应-简单地说就是model.findOne方法。
在主代码库中,它按预期返回(就像在数据库中查询时一样),但在测试时,它无法到达回调,测试刚好超时。。有什么想法吗?
Mocha的输出:
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);
});
};
正如我所看到的,您正在使用猫鼬。因此,在开始测试之前,您必须先连接到您的mongodb。例如,您可以在before
部分中执行此操作。
Mongoose connect函数支持回调。
before(function (done) {
mongoose.connect('mongodb://localhost/test', done);
});
相关文章:
- 测试Angular Service解决错误回调中的promise
- 当我的单元测试失败时,回调被调用了两次
- 使用jasmine测试JavaScript回调函数
- $watch回调每次在浏览器中触发,但在测试期间只触发一次
- 如何在没有空回调的情况下测试多个调用
- 使用qunit.js查询事件回调测试
- 使用Mocha.js进行Javascript测试:如何模拟Mocha中的回调
- Sinon-带有回调的存根函数-导致测试方法超时
- 调度程序未在开玩笑单元测试中注册回调
- 在 chai 测试中未由请求调用回调
- 省略摩卡回调测试
- 使用 Jasmine 测试异步回调
- 在 Node 中进行回调测试.js生成匿名错误
- AngularJS $scope.$watch Jasmine 测试中未定义的回调函数参数
- jsonp 回调(stripe.js)中延迟承诺的 Karma 单元测试
- Mocha在运行CasperJS测试时不考虑超时或回调
- 使用JsTestDriver和Mockjax测试内联回调函数
- 如何测试异步回调
- 使用Jasmine进行异步回调测试
- 如何用第三方组件和回调测试EmberJS ?