Rails:unit testingbefore_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 ? 我应该在控制器级别这样做吗?

我发现这篇博文可能对你很感兴趣。

简而言之,它提到您可以使用send方法作为参数来调用回调。 在这种情况下,您可以使用强制相册调用before_create回调

 album.send(:before_create)