Rails: модульное тестирование before_create? - PullRequest
3 голосов
/ 15 июня 2009

Я пытаюсь проверить, правильно ли генерируется поле обратным вызовом, но я не могу понять это.

album.rb

before_create :generate_permalink

private
  def generate_permalink
    @title = album.downcase.gsub(/\W/, '_')
    @artist = artist.downcase.gsub(/\W/, '_')
    self.permalink =  @artist + "-" + @title
  end

album_test.rb

test "should return a proper permalink" do
  album = Album.new(:artist=>'Dead Weathers', :album=>'Primary Colours')
  album.save
  assert_equal "dead_weathers-primary_colours", album.permalink 
end

Но это не работает, потому что album.permalink не вернет значение, если оно сохранено.

Есть ли способ проверить before_create? Должен ли я делать это на уровне контроллера?

1 Ответ

4 голосов
/ 15 июня 2009

Я нашел этот пост , который может вас заинтересовать.

Вкратце упоминается, что вы можете вызвать обратный вызов самостоятельно, используя метод send с обратным вызовом в качестве параметра. В этом случае вы можете заставить альбом вызывать обратный вызов before_create, используя

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