gpt4 book ai didi

ruby-on-rails - Rails 3 工厂与简单实例化

转载 作者:行者123 更新时间:2023-12-04 23:07:46 25 4
gpt4 key购买 nike

有人可以解释为什么工厂比测试期间的简单实例化更有用吗?更清楚的是,我看不出两者之间的区别:

before(:each) do
@attr = {
:name => "Example User",
:email => "user@example.com",
:password => "foobar",
:password_confirmation => "foobar"
}
end

it "should create a new instance given valid attributes" do
User.create!(@attr)
end

还有这个
before(:each) do
@user = Factory(:user)
end

其中有以下工厂:
Factory.define :user do |user|
user.name "Michael Hartl"
user.email "mhartl@example.com"
user.password "foobar"
user.password_confirmation "foobar"
end

最佳答案

您的应用程序越大,您从工厂中获得的 yield 就越多。

您的解决方案非常适合 2-3 个模型。但是假设你有一个文章模型,你需要有效的用户来测试东西。现在您有 2 个文件,您可以在其中为用户定义 @attr。现在想象有更多的模型需要用户,比如评论、角色等。它变得一团糟。

使用工厂更方便。好处是您可以定义多个默认原型(prototype)。像管理员用户、普通用户、未注册用户等。

此外,代码是 DRY,所以如果您添加一个新的必填字段,您可以将它添加到您的工厂一次,然后您就完成了。

所以答案是:基本上它们是相同的,但是你的应用程序越大,你就越需要一种方法来管理你的所有原型(prototype)。

关于ruby-on-rails - Rails 3 工厂与简单实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7219890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com