2015-01-21 3 views
0

다양한 매개 변수를 사용하고 매개 변수를 반복하는 표 내용을 읽는 Capybara 메서드를 만들고 싶습니다. 나는 다른 프로그램의 열 훨씬 더 큰 숫자와 테이블을 생성하기 위해 같은 CSS 테이블 구조를 사용하고Capybara에 전달 된 매개 변수를 루핑하기

Then /^I should see a table record with "(.*?)", "(.*?)", "(.*?)"$/ do |invisible, name, address, phone| 
    rows = page.all(".table-bordered tr") 
    expect(rows.any? { |record| record.has_content? name }).to be_true 
    rows.each do |record| 
    if record.has_content? name 
     expect(record.has_content? address).to be_true 
     expect(record.has_content? phone).to be_true 
    end 
    end 
end 

: 여기

는 내가 가지고있는 방법이다. 따라서 테이블에 3 열 또는 12 열이 있는지 여부에 상관없이 같은 방법을 사용하여 어색한 코드를 작성하지 못하게하고 싶습니다.

가변 개수의 매개 변수를 지정하고 카피 바라의 각 매개 변수를 반복 할 수 있습니까?

답변

0
def assert_my_table(name, *row_data) 
    # It will be much faster than looping through all rows 
    row = page.find(:xpath, "//*[@class='table-bordered']//tr[./td='#{name}']") 

    # retrive row contents only once (again, it will be faster than retrieving it again for each of the columns you want to assert) 
    row_text = row.text 

    row_data.each do |text| 
    expect(row_text).to include(text) 
    end 
end 
assert_my_table(name, address, phone)