這裏您有Shoulda
用於測試的宏accepts_nested_attributes_for
:http://mediumexposure.com/testing-acceptsnestedattributesfor-shoulda-macros/。它不支持任何選項(如:reject_if
),僅支持accepts_nested_attributes_for
。
但是對於:reject_if
,您可以創建一個有效的Greeting模型,其嵌套屬性爲User
,但不包含:name
。然後檢查用戶是否已被保存,然後用空白:email
一樣的,所以你可以做這樣的事情:
describe Greeting
it { expect { Factory(:greeting, :user_attributes => Factory_attributes_for(:user)) }.to change(User, :count).by(1) }
it { expect { Factory(:greeting, :user_attributes => Factory_attributes_for(:user, :name => '')) }.to_not change(User, :count) }
it { expect { Factory(:greeting, :user_attributes => Factory.attributes_for(:user, :email => '')) }.to_not change(User, :count) }
end
是的,它工作:) – AnkitG