我使用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答案後更新。
如果在上面的代碼中,我使用的context "foreach user" do ...
代替it "foreach user" do ...
我得到以下錯誤:
undefined local variable or method `user1' for #<Class:0x00000105310758> (NameError)
僅供參考,使用'subject'是一個紅鯡魚在這裏。你從來沒有真正使用你在你的例子中設置的主題。 – Emily