【发布时间】:2011-09-14 19:00:41
【问题描述】:
修订:这里的错误是我在同一个哈希中存储了几个不同的模型。这是我构建数组的一种内部方式。无论如何,我为这里的错误道歉。没有人可以用我的提问方式回答这个问题。
所以我在控制器规范中有一个 RSpec before(:each) 块。我的示例模型有一个状态字段和以下验证:
class Model < ActiveRecord::Base
STATI = [ "vacant", "deleted", "deactivated"]
...
validates :status, :inclusion => { :in => STATI }
...
end
在我的规范中,我有以下代码。
describe Controller do
...
describe "some methods" do
before(:all) do
@models = []
10.times { @models << Factory(:model) }
end
before(:each) do
@models.each { |m| m.update_attributes(:status => "vacant") }
end
...
end
end
当我运行规范时,所有其他描述块都运行良好。它会产生一个错误,效果如下: ActiveRecord::RecordInvalid: 验证失败:状态未包含在列表中 并指向显示 m.update_attributes(:status => "vacant") 的行。
感谢您的帮助。
【问题讨论】:
-
你用
Factory.model创建什么状态? -
旁注:“@models = 10.times.map { Factory(:model) }”或“@models = FactoryGirl.create_list(:model, 10)”
-
apneadiving,工厂使用相同的状态:“vacant”
-
我这里也应该有一个类似的问题,但我的问题还是没有用那个解决方案解决,也没有解决,因为在这种情况下:stackoverflow.com/questions/2416381/…
-
- 托克兰;出于某种原因,这对我不起作用。我得到了未初始化的常量工厂女孩。工厂工作正常。我安装了 gem 'factory_girl_rails', '1.0'
标签: ruby-on-rails ruby ruby-on-rails-3 testing rspec