2017-01-11 2 views
0

Ich bin sehr neu zu testen in Rails. Ich versuche, einen sehr grundlegenden Test für die Index-Aktion in meinem Alben-Controller zu erstellen. Ich erhalte einen Fehler, nicht bei diesem Test, sondern bei allen meinen Tests. Der Fehler sieht so aus:Rails Test Fehler

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) 

Alle meine Tests erhalten diesen Fehler, nicht nur dieser. Dies ist der Test, den ich mit dem obigen Beispiel zu laufen versuche:

require 'test_helper' 

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

Hier ist der Index Aktion in meinen Alben Controller:

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

nicht sicher, was los ist. Hilfe wäre willkommen!

+0

können Sie mit 'albs_controller_test.rb' Code bearbeiten –

Antwort

0

Ich würde etwas mehr Code benötigen, um eine bessere Lösung zu geben, aber durch den Fehler scheint es, dass Sie versuchen, mehr als einen Benutzer mit der gleichen E-Mail zu erstellen. Und da Sie sie für UNIQUE validieren, schlägt der Test fehl.

Also ich denke, das Problem muss woanders sein, wo Sie die Benutzer für den Test erstellen.

Wenn Sie Vorrichtungen verwenden, können Sie so etwas wie dies versuchen:

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

Und wenn Sie Fabrik Mädchen verwenden, können Sie so etwas wie dies versuchen:

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

Hoffe, es hilft ..