构建rails 4.2应用程序,我对TDD很新,但我真的在努力学习它,而且我无法弄清楚为什么以下测试正在通过。
def setup
@lead = Lead.new(first_name: "Joe", last_name: "Blow", email: "joe@example.com", phone: "555 555 5555",
number_of_rooms: 5)
end
...
...
test "should have origin state if origin country is United States" do
@lead.origin_country_id = Country.create!(name: "United States").id
@lead.origin_state_id = nil
assert_not @lead.save
end
我的模型文件如下:
class Lead < ActiveRecord::Base
validates :origin_country_id, presence: true
validates :destination_country_id, presence: true
belongs_to :origin_state, class_name: 'State', foreign_key: 'origin_state_id'
belongs_to :destination_state, class_name: 'State', foreign_key: 'destination_state_id'
belongs_to :origin_country, class_name: 'Country', foreign_key: 'origin_country_id'
belongs_to :destination_country, class_name: 'Country', foreign_key: 'destination_country_id'
end
就像我说的,我是TDD的新手,所以如果这是一个糟糕的测试,请告诉我你将如何改进它。基本上,这用于引用人们在国际上运送货物,因此我有一个原产国和目的地国家,我需要验证具有州的国家在提交数据时填写了州字段。国家/地区是一个只有名称的模型,州是具有国家/地区ID且属于国家/地区的模型。
答案 0 :(得分:0)
您正在验证origin_country_id
的存在,但不存在origin_state_id
。在您的测试中,您设置了origin_country_id
的值,但由于您没有验证origin_state_id
,因此您告诉Rails nil
是该字段的可接受值。