J'ai des modèles: Post et User (Devise). Je suis en train de tester le contrôleur Post.Test du contrôleur avec 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
Mais le second test échoue:
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
Comment puis-je résoudre ce problème?
Lorsque j'inclus votre code dans spec_helper. J'ai une erreur Erreur/Erreur: Impossible de trouver la ligne correspondante du backtrace ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: impossible de démarrer une transaction dans une transaction: commencez la transaction – Mike
vous n'avez pas besoin d'une autre gemme pour cela. – coneybeare
J'ai trouvé la solution d'exception SQLite était de supprimer le 'clean_with (: troncature)' et de changer complètement la stratégie à 'DatabaseCleaner.strategy =: truncation' – Dan