Rspec: как я могу проверить необязательное поле - PullRequest
1 голос
/ 29 декабря 2011

В настоящее время я учусь с видео на YouTube Эффективная разработка на основе Rails Test-Driven - Вольфрам Арнольд Одно упражнение:

Объект Person имеет необязательное middle_name.

Я создаю миграцию, чтобы добавить отчество в базу данных

  • рейк g миграция AddMiddleNameToPerson отчество: строка

и я пишу спецификацию

это «может иметь отчество»

Но я понятия не имел, как проверить эту проблему как я могу проверить необязательное поле

спасибо за помощь

Bulleric

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Сказать, что атрибут является «необязательным», означает, что экземпляр действителен, когда атрибут равен nil. Итак:

it "does not require a middle name" do
  @person = Person.new
  @person.valid?
  @person.errors[:middle_name].should_not include("can't be blank")
end

Если вы используете shoulda , тогда это может быть сделано еще проще:

describe Person do
  it { should_not validate_presence_of(:middle_name) }
end
0 голосов
/ 29 декабря 2011

Если вы используете Factor_girl, создайте две фабрики,

person1 = Factory.create(:person, :first_name=> "A")  
person2 = Factory.create(:person, :first_name=> "A", :middle_name => "M")

Теперь в своем тесте покажите, что person1 и person2 оба сохраняются в базе данных.
Вы можете сделать то же самое с приборами, если вы не используете factory_girl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...