私はモデルがあります:投稿とユーザー(Devise)。私はコントローラーポストをテストしています。RSpec、Devise、工場の女の子でコントローラをテストする
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
しかし、第二のテストが失敗した:
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
私はこれをどのように修正すればよいですか?
私はあなたのコードをspec_helperに含めます。エラーが発生しました。エラー/エラー:バックトレースから一致する行が見つかりません ActiveRecord :: StatementInvalid: SQLite3 :: SQLException:トランザクション内でトランザクションを開始できません。トランザクション開始トランザクション – Mike
このために別の宝石は必要ありません。 – coneybeare
SQLiteの例外解決策が 'clean_with(:truncation)'を削除し、ストラテジを 'DatabaseCleaner.strategy =:truncation'に完全に変更することでした – Dan