[Ror-es] factory_girl + :uniquessness => true
Daniel Rodriguez Troitiño
Thu Feb 18 11:30:02 GMT 2010
On Wed, Feb 17, 2010 at 23:50, Marcelino Llano wrote:
> Tengo un test que está resistiéndose.
> No pretendo testear los modelos en el test de controlador,
> pero no consigo generar titles únicos.
> # episode.rb
> class Episode < ActiveRecord::Base
> validates :title, :uniqueness => true
> end
> #factories.rb
> Factory.sequence :title do |n|
> "Foo #{n}"
> end
> Factory.define :episode do |f|
> f.title { Factory.next(:title) }
> end
> #episode_controller_test.rb
> class Admin::EpisodesControllerTest < ActionController::TestCase
> def setup
> @episode = Factory.create(:episode)
> end
>
> test "should create episode" do
> assert_difference('Episode.count') do
> post :create, :episode => Factory.attributes_for(:episode)
> end
> assert_redirected_to admin_episodes_path
> assert_equal "El episodio ha sido creado", flash[:notice]
> end
> end
> ¿Qué puede fallar?
>
¿Qué es lo que falla? Supongo que el assert_difference ¿no?
El código parece correcto, y suponiendo que el funcionamiento de
Factory Girl lo es también… ¿has probado a eliminar la base de datos
de testing y recrearla de nuevo? Quizá tras alguna excepción se quedó
un "Foo 2" o "Foo 1" por ahí que es lo que hace que falle.