有谁知道如何测试Mongoose验证?测试MongooseJs验证
实施例,我有以下模式(作为例子):
var UserAccount = new Schema({
user_name : { type: String, required: true, lowercase: true, trim: true, index: { unique: true }, validate: [ validateEmail, "Email is not a valid email."] },
password : { type: String, required: true },
date_created : { type: Date, required: true, default: Date.now }
});
的validateEmail方法被定义为这样:
// Email Validator
function validateEmail (val) {
return /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(val);
}
我要测试的验证。最终结果是,我希望能够测试验证,并根据这些事情发生,然后我可以编写其他测试来测试这些代码片段之间的交互。例如:用户尝试使用与使用相同的用户名注册(电子邮件已在使用中)。我需要一个测试,我可以实际拦截或看到验证正在工作而没有击中数据库。在这些测试中,我不想打蒙戈。这些应该是UNIT测试而不是集成测试。 :)
谢谢!
在过去的几您呼叫用户的测试。validate():我正在使用grunt和Jasmine Node运行我的测试,并且我的断言从未被命中以失败构建。我必须设置回调的测试才能使断言正常运行。在我的情况下,使用jasmine-node,我在验证回调中添加了一个jasmine.asyncSpecWait()到每个测试的结尾和一个jasmine.asyncSpecDone()。然后一切都很好。非常有用的答案! – 2014-03-17 17:30:07