【发布时间】:2011-09-19 18:12:55
【问题描述】:
我正在使用 Ruby on Rails 3.0.9 和 RSpect 2。我正在尝试通过以下方式重构一些规范文件(以便使用更少的代码进行类似 User 类对象属性值的测试):
describe User do
let(:user1) { Factory(:user, :users_attribute_a => 'invalid_value') }
let(:user2) { Factory(:user, :users_attribute_b => 'invalid_value') }
let(:user3) { Factory(:user, :users_attribute_c => 'invalid_value') }
it "foreach user" do
[ user1, user2, user3 ].each do |user|
subject { user }
it "should be whatever"
user.should_not be_valid
...
end
end
end
end
但是,如果我运行上述测试,我会收到以下错误:
Failure/Error: it "should be whatever" do
NoMethodError:
undefined method `it' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_2:0x00000106ccee60>
有什么问题?我该如何解决?
在 @Emily 回答之后
UPDATE。
如果在上面的代码中我使用context "foreach user" do ... 而不是it "foreach user" do ... 我得到以下错误:
undefined local variable or method `user1' for #<Class:0x00000105310758> (NameError)
【问题讨论】:
-
仅供参考,这里使用
subject是一个红鲱鱼。您从未真正使用过您在示例中设置的主题。
标签: ruby-on-rails ruby ruby-on-rails-3 rspec rspec2