0
我有一個問題,在節點上的一些mocha測試 - 我正在測試一個模型,並調用模型的方法來獲得響應 - 只是Model.findOne方法。NodeJS - 測試模型,不接收回調
在主代碼庫中按預期方式返回(與在數據庫中查詢時一樣),但是當測試它無法到達回調並且測試只是超時時..有什麼想法可能會引起什麼問題?從摩卡
輸出:
1) user model tests check user exists email should equal input: [email protected]:
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: '[email protected]',
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函數的列表嗎? 我認爲這可能是麻煩的根源。也許它會拋出錯誤,並且在此函數上停止執行腳本。 – vodolaz095
我已經添加了它。我在代碼的其他部分使用了相同的函數,它的工作方式和預期的一樣,我只是在測試環境中沒有得到任何響應。 –
您應該使用「user.findOneByEmail」,因爲您已經在「user」中注入了「User」類。 – sayume