2017-01-11 9 views
0

Railsでのテストは非常に新しいです。私はアルバムコントローラのインデックスアクションのための非常に基本的なテストを作成しようとしています。私はこのテストではなく、すべてのテストでエラーが発生しています。エラーは次のようになります。Railsテストエラー

bin/rails test test/controllers/albums_controller_test.rb:18 

E 

Error: 
AlbumsControllerTest#test_should_get_edit: 
ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: UNIQUE constraintfailed: users.email: INSERT INTO "users" ("created_at", "updated_at", "id") VALUES ('2017-01-11 21:54:05.906006', '2017-01-11 21:54:05.906006', 298486374) 

私のテストでは、このエラーだけでなく、このエラーが発生します。

require 'test_helper' 

class AlbumTest < ActiveSupport::TestCase 
test "index action should work" do 
get :index 
assert_response :success 
end 
end 

はここに私のアルバムコントローラ内のindexアクションである:これは、私は上記の例を実行しようとしたテストである

def index 
    @albums = Album.all.order(year: :desc).order(title: :asc) 
end 

何が起こっているのかわかりません。助けていただければ幸いです!

+0

あなたは 'albums_controller_test.rb'コードで編集できますか –

答えて

0

もっと良い解決策を提供するためにはもっとコードが必要ですが、同じメールで複数のユーザーを作成しようとしているようです。そしてあなたがそれらがユニークであることを検証しているので、テストは失敗します。

だから、問題はテスト用のユーザーを作成する場所でなければならないと思います。

あなたは器具を使用している場合、あなたはこのような何か試すことができます。

john: 
    name: $LABEL 
    email: [email protected] 

をそして、あなたは工場出荷時の女の子を使用している場合、あなたはこのような何かを試すことができます。

factory :user do 
    name    "John" 
    sequence(:email) { |n| "email#{n}@example.com" } 

はそれが役に立てば幸い..

関連する問題