2012-04-09 1 views
2

Я новичок в RSpec и у меня есть тестовый сценарий, в котором я пишу:Используя RSpec, существует ли способ утверждать, является ли конкретный атрибут модели недопустимым?

my_object.should_not be_valid 

и он работает нормально. Тем не менее, я хотел бы проверить, не является ли конкретный атрибут модели недопустимым. Это такое готовое поведение RSpec? Могу ли я что-то вроде пишу:

my_object.should_not be_valid(:name) 

В идеале, я хотел бы иметь возможность проверить количество ошибок тоже что-то вроде:

my_object.should_not be_valid(:name => 1) 

, но теперь это не так важно для меня.

ответ

3

Согласно this, вы должны быть в состоянии написать либо так:

describe Person do 
    it "should validate presence of email" do 
    person = Person.new(:email =>; nil) 
    person.should_not be_valid 
    person.should have(1).error_on(:email) 
    end 
end 

Или, как показано ниже, с помощью these rspec matchers:

describe Person do 
    it { should validate_presence_of(:email) } 
end 
+0

Ok. Первый блок - это точный ответ на мой вопрос. Ваш второй блок очень информативный и полезный. Благодарю. –

+0

Просто примечание стороны: репутат github, о котором вы говорили, устарел. Эта вилка (https://github.com/smtlaissezfaire/rspec-on-rails-matchers) более современна и также предоставляется как драгоценный камень (https://rubygems.org/gems/rspec-on- рельсы-matchers). Вы также можете проверить все вилки: https://github.com/joshknowles/rspec-on-rails-matchers/network –

 Смежные вопросы

  • Нет связанных вопросов^_^