Я пытаюсь проверить, что поле генерируется должным образом с помощью обратного вызова, но я не могу понять это.Рельсы: Единичное тестирование a before_create?
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
? Должен ли я делать это на уровне контроллера?
спасибо, что работал с: album.send (: generate_permalink) с именем метода вместо: before_create – dMix
К сожалению, забыл прочитать весь пост в блоге, и не было на моей домашней машине для тестирования. Да, это имя метода, который вы хотите назвать, а не обратного вызова. По-видимому, это хак для вызова частных методов. –