Factory Girl介绍描述了FactoryGirl.build()和之间的区别FactoryGirl.create():
# Returns a User instance that's not saved
user = FactoryGirl.build(:user)
# Returns a saved User instance
user = FactoryGirl.create(:user)
Run Code Online (Sandbox Code Playgroud)
我仍然不明白两者之间的实际差异.有人可以给出一个例子,你想要使用一个而不是另一个吗?谢谢!
Hel*_*tos 110
该create()方法build()保留模型的实例,而该方法仅将其保留在内存中.
就个人而言,我create()只在真正需要持久性时使用该方法,因为写入数据库会使测试耗费时间.
例如
我创建用户进行身份验证,create()因为我的身份验证引擎查询数据库.
要检查模型是否具有该build()方法将执行的属性,因为不需要DB访问.
it{Factory.build(:user).should respond_to(:name)}
Run Code Online (Sandbox Code Playgroud)
"当你建立联想时,有一个例外构建实际上'创建',即你的关联不再在记忆中而是持续存在.记住这一点" - Shakes
cha*_*asm 12
使用FactoryGirl.build(:factory_name)不会持久存储到数据库并且不会调用save!,因此您的Active Record验证将不会运行.这要快得多,但验证可能很重要.
使用FactoryGirl.create(:factory_name)将持久保存到db并将调用Active Record验证.这显然较慢但可以捕获验证错误(如果您在测试中关心它们).
| 归档时间: |
|
| 查看次数: |
39433 次 |
| 最近记录: |