Спецификация модели Rspec - PullRequest
0 голосов
/ 02 августа 2010

Как мне описать описанный ниже метод, используя Rspec?

def validate
  if !self.response.blank? && !self.response.match("<").nil?
    self.errors.add :base, 'Please ensure that Response field do not contain HTML(< and >) tags'
  end
end

Кто-нибудь может помочь?

1 Ответ

4 голосов
/ 02 августа 2010

Из кода видно, что вы хотите проверить атрибут response и установить сообщение об ошибке, если оно недействительно.

Итак, если ваша модель называется Post:

context "HTML tags in response" do
  before(:each) do
    @post = Post.new(:response => "<")
  end

  it "should not be valid" do
    @post.should_not be_valid
  end

  it "should set the error hash" do
    @post.errors.should include('Please ensure that Response field do not contain HTML(< and >) tags')
  end 
end 

Вы должны проверить желаемое поведение модели, а не реализацию. Не должно иметь значения, происходит ли проверка в пользовательском методе или во встроенных подпрограммах проверки Rails.

В качестве примечания, как правило, лучше добавить сообщение об ошибке в атрибут, чем errors.base. Так что вы можете сказать вместо этого:

self.errors.add(:response, "etc. etc.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...