[forms] capybara를 사용하여 양식 필드가 올바르게 미리 채워져 있는지 어떻게 확인할 수 있습니까?

카피 바라로 채울 수있는 적절한 레이블이있는 필드가 있습니다.

fill_in 'Your name', with: 'John'

채우기 전에 값을 확인하고 파악할 수 없습니다.

fill_in다음 줄 뒤에 추가하면 :

find_field('Your name').should have_content('John')

페이지를 저장하여 확인한대로 바로 채우기가 작동했지만 테스트는 실패합니다.

내가 무엇을 놓치고 있습니까?



답변

xpath 쿼리 를 사용하여 input특정 값을 가진 요소 (예 : ‘John’) 가 있는지 확인할 수 있습니다 .

expect(page).to have_xpath("//input[@value='John']")

자세한 내용은 http://www.w3schools.com/xpath/xpath_syntax.asp 를 참조 하십시오 .

아마도 더 예쁘게 :

expect(find_field('Your name').value).to eq 'John'

편집 : 요즘 아마도 have_selector를 사용합니다.

expect(page).to have_selector("input[value='John']")

페이지 객체 패턴을 사용하는 경우 (해야합니다!)

class MyPage < SitePrism::Page
  element :my_field, "input#my_id"

  def has_secret_value?(value)
    my_field.value == value
  end
end

my_page = MyPage.new

expect(my_page).to have_secret_value "foo"


답변

또 다른 예쁜 해결책은 다음과 같습니다.

page.should have_field('Your name', with: 'John')

또는

expect(page).to have_field('Your name', with: 'John')

각기.

또한 참조 참조 .

참고 : 비활성화 된 입력의 경우 옵션을 추가해야합니다 disabled: true.


답변

자리 표시자를 테스트하려는 경우 다음을 사용하십시오.

page.should have_field("some_field_name", placeholder: "Some Placeholder")

또는:

expect(page).to have_field("some_field_name", placeholder: "Some Placeholder")

사용자가 입력 한 값을 테스트하려는 경우 :

page.should have_field("some_field_name", with: "Some Entered Value")


답변

나는 약간 다른 것을하는 방법을 궁금해했다 : Capybara가 일치 할 때까지 매처를 다시 테스트 할 수있는 능력을 사용하면서 필드에 어떤 가치 가 있는지 테스트하고 싶었다 . 이를 위해 “필터 블록”을 사용할 수 있습니다.

expect(page).to have_field("field_name") { |field|
  field.value.present?
}


답변