Построение рельсов 4.2 приложения, и я довольно новичок в TDD, но я действительно работаю над его изучением, и я не могу понять, почему ниже тест проходит.Тестирование, когда оно не должно быть на условной валидации
def setup
@lead = Lead.new(first_name: "Joe", last_name: "Blow", email: "[email protected]", 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, так что если это плохой тест, пожалуйста, дайте мне знать, как вы бы улучшить. В основном, это используется, чтобы цитировать людей для доставки товаров на международном уровне, поэтому у меня есть страна происхождения и страна назначения, и мне нужно проверить, что страны с государствами заполняют поле штата при отправке данных. Страна - это модель с просто именем, государство - это модель с идентификатором страны и относится к стране.
так как я могу изолировать страну происхождения в своем тесте, чтобы гарантировать, что государство присутствует, если страна является Соединенными Штатами? – user3562355
Речь идет не об изоляции страны. Вы не проверяете наличие идентификатора состояния вообще. У вас есть 2 'validates', ни один из которых не используется для' state'. –