Mam modele: Post i User (Devise). Testuję kontroler Post.Testowanie kontrolera za pomocą 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
Ale drugi test nie powiedzie się:
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
Jak mogę rozwiązać ten problem?
Kiedy dołączę twój kod do spec_helper. Wystąpił błąd Niepowodzenie/Błąd: Nie można znaleźć pasującej linii z śledzenia wstecznego ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: nie można uruchomić transakcji w ramach transakcji: rozpocznij transakcję – Mike
nie potrzebujesz do tego innego klejnotu. – coneybeare
Stwierdziłem, że rozwiązaniem wyjątku SQLite było usunięcie 'clean_with (: truncation)' i zmiana strategii całkowicie na 'DatabaseCleaner.strategy =: truncation' – Dan