내가 레일에 새로운 해요 작동합니다. 내 프로젝트에서는 rspec + capybara + poltergeist + selenium + database_cleaner를 사용합니다.레일 청소 데이터베이스는하지
소스 코드 github link
내가 PostgreSQL은 9.5.5가, 우분투 16.04 LTS.
때 실행
rspec spec/features # everything work fine too
을 실행하지만 테스트
rspec spec/controllers # everything work fine
내가 모든 테스트를 실행하면 먼저 승인 테스트를 실행
rspeC# part of tests fail
: 셀레늄 -> question_id 브라우저 28 , database_cleaner를 사용하기 때문에 1이어야합니다.
왜 database_cleaner 내 데이터베이스를 청소하지? 내가 뭘 잘못 했니? 나는 해결책을 찾기 위해 하루를 보냈지 만 아무것도 발견하지 못했습니다. 도와주세요.
P. 그것은 훈련 프로젝트입니다.
내 Database_Cleaner 구성은 : 당신이 RSpec
와 database_cleaner
및 Capybara
config (설정)하는 방법을 읽을 수
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, js: true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
Warden.test_reset!
if Rails.env.test?
FileUtils.rm_rf(Dir["#{Rails.root}/public/uploads"])
end
end
해야한다 aner 그것은 데이터베이스가 비어있을 수 있지만 ID 열 카운터를 재설정하지 않을 수 있습니다 - 얼마나 많은 질문에 저장되어 있는지 확인하기 위해 데이터베이스를 쿼리 했습니까? 테스트에 하드 코드 된 레코드 ID가 없어야합니다.그게 문제가 아니라면 테스트 중 하나와 database_cleaner 구성을 질문에 추가하십시오. –
질문 할 파일을 추가합니다. 그리고 기본적으로 나는 db에서 그 질문은 하나라고 생각하고, 추가 된 파일에 대한 링크는 링크 href : '/uploads/attachment/file/1/test_file.dat'을 가져야한다. 여기서 1은 질문 ID이다. 그러나 실제로 질문 ID는 28입니다. 나는 테스트가 실행될 때마다 데이터베이스 클리너 정리 테이블을 매번 생각했습니다. –
@ThomasWalpole - 나는 당신이 이야기하는 것을 이해합니다. 예, 표는 1 행만 있습니다. 테스트를 다시 작성해야합니다. 해결책을 가져 주셔서 감사합니다. –