Ở đây bạn có Shoulda
macro để thử nghiệm accepts_nested_attributes_for
: http://mediumexposure.com/testing-acceptsnestedattributesfor-shoulda-macros/. Nó không hỗ trợ bất kỳ tùy chọn nào (chẳng hạn như :reject_if
), chỉ trần accepts_nested_attributes_for
.
Nhưng đối với :reject_if
, bạn có thể tạo mô hình Chào mừng hợp lệ với thuộc tính lồng nhau cho User
nhưng không có :name
. Sau đó kiểm tra xem người dùng đã được lưu lại, và sau đó cùng với trống :email
Vì vậy, bạn có thể làm một cái gì đó như thế này:
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
Nguồn
2011-07-19 13:35:07
Có, nó hoạt động :) – AnkitG