【发布时间】:2018-02-22 16:39:21
【问题描述】:
对于单元测试,我需要创建临时模型对象而不将其保存在数据库中,只是为了有一些实例方法。
模型结构示例
//User.js - my model
module.exports = {
attributes: {
firstName : { type: 'string' },
lastName : { type: 'string' },
getName: function () {
return this.firstName + ':' + this.lastName;
}
}
};
我有下一个对象
const testData = {
firstName: 'Foo',
lastName: 'Bar'
};
这一行在 db 中创建新记录
User.create(testData);
是否可以避免创建记录?我该怎么做?
【问题讨论】:
-
您可以设置第二个数据库连接,使用sails-disk 并通过添加
connection: 'localDiskDb'将您的模型指向该连接。这显然会在本地磁盘数据库中创建记录,但不会在您使用的任何其他数据库中创建记录。或者,您可以将 beforeCreate 生命周期回调添加到模型并在那里引发错误以阻止保存。 -
@Glen 所以,您建议在
Sails.lift中通过另一个连接传递配置?喜欢Sails.lift{model{connection:'localDiskDb'}}? P.S: ATM 我决定在beforeMocha 回调中在 DB 中创建真实记录,然后在after回调中销毁它。但这似乎是一种解决方法。拥有临时模型实例而不在数据库中创建记录真是太好了。 -
所以你现在所做的与我在第二点中提到的类似。你用的是什么版本的帆?
-
@Glen 在那个项目中我使用 0.12.14。但是我的新项目从版本 v1 开始。 P.S:我使用 Mocha 生命周期回调,而不是 Sails 模型。
-
所以这个问题与 v0.12.* 有关?
标签: sails.js