Unit testing 如何在Sails测试中成功实例化db模型

Unit testing 如何在Sails测试中成功实例化db模型,unit-testing,sails.js,mocha.js,Unit Testing,Sails.js,Mocha.js,我一直遵循Sails.js文档进行测试,如下所示: 我已经成功地实现了控制器测试 点击我的应用程序的不同路径,检查不同Express请求的响应 我的问题是知道A)如何实例化一个模型,特别是从我的用户模型B)我如何保证模型成功创建 我目前有一个测试,在之前的钩子中,我使用所有必需的属性创建新用户: before(function(){ User.create({firstName:"Bob", lastName: "Balaban", password:"12345", email:"b

我一直遵循Sails.js文档进行测试,如下所示:

我已经成功地实现了控制器测试 点击我的应用程序的不同路径,检查不同Express请求的响应

我的问题是知道A)如何实例化一个模型,特别是从我的
用户
模型B)我如何保证模型成功创建

我目前有一个测试,在
之前的
钩子中,我使用所有
必需的
属性创建新用户:

before(function(){
    User.create({firstName:"Bob", lastName: "Balaban", password:"12345", email:"bob@bob.com"}) 
   });
问题是,我不知道如何验证此记录是否已添加到我的
测试
数据库中,或者调用
创建
时是否引发验证错误或其他错误


注意:我这样问是因为依赖于
before()
hook成功运行的测试失败,它可能失败的唯一原因是,如果用户没有实际添加到db中,您需要在
之前使用
done
回调函数参数等待在
中创建
用户
,并在设置完测试环境后调用它。此外,尽管文件敦促你这么做,但出于某种原因,你没有在这里扬帆。我还建议使用测试数据库而不是普通数据库,这样测试数据就独立于生产/开发数据

下面是示例代码。添加
done
exec
回调可能是最重要的部分

var Sails=require('Sails'),Sails;
// ...
之前(功能(完成){
//增加摩卡咖啡的超时时间,使帆有足够的时间提升。
这是超时(10000);
扬帆({
//如果您想使用不同的数据库进行测试,请取消注释这些数据库并替换为您自己的数据库信息。
/*连接:{
//用任何适合你的方式替换以下内容。
testMysql:{
适配器:“sails mysql”,
主机:“localhost”,
港口:3306,
用户:“mySQLUser”,
密码:“MyAwesomePassword”,
数据库:“testDB”
}
},
型号:{
连接:“testMysql”,
迁移:“删除”
}
*/
},函数(错误,服务器){
sails=服务器;
如果(错误)返回完成(错误);
创建({firstName:“Bob”,lastName:“Balaban”,密码:“12345”,电子邮件:“bob@bob.com"})
.exec(函数(err,createdUser){
如果(错误){
console.log(“创建用户失败!以下错误:”);
控制台日志(err);
}
否则{
log(“用户创建成功:”);
console.log(用户);
}
完成(错误,航行);
})
});
});