2017-04-03 3 views
0

SQLlite3 데이터베이스에서 레코드 집합을 표시하기 만하면되는 프로젝트를 설정했습니다. 나는 그 데이터베이스에 테이블을 가지고 있으며, 루트 페이지가 데이터베이스의 모든 레코드를 표시하기를 원합니다. 나는이 작업을했지만 지금은 페이지에 페이지의 첫 번째와 마지막 레코드가 있는지 확인하기 위해 카피 바라 테스트를 설정하려고합니다.Capybara 테스트에서 레일 모델 사용하기

require 'rails_helper' 
describe "seeing record from scotlands model " do 
    specify "I can see a list of all charities" do 
    visit "/" 
    expect(page).to have_content "@table.first_record" 
    end 
end 

그러나 위의 내용은 모델에 대한 링크를 제공하지 않으므로 액세스 할 수 없습니다. 테스트 파일에서 테이블에 대한 링크를 얻으려면 어떻게해야합니까?

답변

0

일반적으로 테스트에서 실제 데이터에 액세스하려고합니까? 나는 항상 그런 것들을 분리시켜야한다는 것을 배웠다.

저는 Rspec 및 Capybara와 함께 작업하기를 좋아합니다. 여기 당신이 논의한 것을 성취 할 수있는 간단하고 솔직한 것이 있습니다 :

require 'rails_helper' 

feature "user sees all scotlands records" do 

    scenario "successfully" do 

    charity1 = Charity.create(name: name1, info: info1) 
    charity2 = Charity.create(name: name2, info: info2) 
    charity3 = Charity.create(name: name3, info: info3) 

    visit root_path 

    expect(page).to have_content(charity1.name) 
    expect(page).to have_content(charity1.info) 

    expect(page).to have_content(charity2.name) 
    expect(page).to have_content(charity2.info) 

    expect(page).to have_content(charity3.name) 
    expect(page).to have_content(charity3.info) 

    end 

end 

사실 저는 FactoryGirl에서도 실제로 작업합니다. 이 경우에는 create_list을 사용하고 한 줄의 코드만으로 원하는만큼 많은 레코드를 만들 수 있기 때문에 작업을 더 쉽게 할 수 있습니다.

+0

실제 데이터를 사용하려고했으나 올바른 방법이 아닌 것 같습니다. FactoryGirl 제안은 좋게 들리지만, 나는 그것에 대해 살펴볼 것입니다. 고맙습니다. –

+0

그래, 레일즈는 테스트 환경에서 실제 DB를 건드리지 않을 것입니다. – vivipoit