The*_*dis 4 factory ruby-on-rails ruby-on-rails-3
有人可以解释为什么工厂比测试期间的简单实例更有用吗?更清楚的是,我没有看到以下区别:
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
Run Code Online (Sandbox Code Playgroud)
还有这个
before(:each) do
@user = Factory(:user)
end
Run Code Online (Sandbox Code Playgroud)
其中有以下工厂:
Factory.define :user do |user|
user.name "Michael Hartl"
user.email "mhartl@example.com"
user.password "foobar"
user.password_confirmation "foobar"
end
Run Code Online (Sandbox Code Playgroud)
您的应用程序越大,您从工厂获得的好处就越多.
您的解决方案非常适合2-3种型号.但是,假设您有一个文章模型,您需要有效的用户来测试内容.现在您有2个文件,您可以在其中为用户定义@attr.现在想象有更多需要用户的模型,比如评论,角色等等.它变得混乱.
使用工厂更方便.好处是您可以定义多个默认原型.像管理员用户,普通用户,未注册用户等.
此外,代码是DRY,因此如果您添加新的必填字段,您可以将其添加到工厂一次,然后就完成了.
答案是:基本上它们是相同的,但是你的应用程序越大,你需要一种管理所有原型的方法.
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |