Tengo modelos: Publicación y Usuario (Devise). Estoy probando el controlador Post.Prueba del controlador con RSpec, Devise, Factory Girl
describe "If user sign_in" do
before(:all){
@user = Factory(:user)
}
it "should get new" do
sign_in @user
get 'new'
response.should be_success
response.should render_template('posts/new')
end
it "should create post" do
sign_in @user
post 'create', :post => Factory(:post)
response.should redirect_to(post_path(:post))
end
end
Pero la segunda prueba falla:
Failure/Error: post 'create', :post => Factory(:post) ActiveRecord::RecordInvalid: Validation failed: Email has already been taken, Email has already been taken, Username has already been taken
¿Cómo puedo solucionar esto?
Cuando incluyo tu código en spec_helper. Obtuve un error Error/Error: no se puede encontrar la línea coincidente desde el backtrace ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: no puede iniciar una transacción dentro de una transacción: begin transaction – Mike
no necesita otra joya para esto. – coneybeare
Encontré que la solución de excepción SQLite era eliminar 'clean_with (: truncation)' y cambiar la estrategia completamente a 'DatabaseCleaner.strategy =: truncation' – Dan