반응형
적절한 오류 메시지와 함께 Capybara를 사용하여 요소 수를 주장하는 방법은 무엇입니까?
카피 바라에서는 다음과 같이 할 수 있습니다.
page.should have_css("ol li", :count => 2)
그러나 페이지에 일치하는 요소가 하나만 있다고 가정하면 오류는 그다지 설명 적이 지 않습니다.
1) initial page load shows greetings
Failure/Error: page.should have_css("ol li", :count => 2)
expected css "ol li" to return something
이 다소 모호한 오류 메시지 대신 오류 출력이 'When matching'ol li ', expected : 2, found : 1'과 같은 방식으로 어설 션을 작성하는 방법이 있습니까? 분명히 그러한 행동에 대한 사용자 지정 논리를 직접 만들 수 있습니다. '즉시 사용할 수있는'방법이 있는지 묻습니다.
그만한 가치를 위해 Selenium 드라이버와 RSpec을 사용하고 있습니다.
나는 이것을 훨씬 더 좋아한다.
expect(page).to have_selector('input', count: 12)
기본적으로 지원되지 않는 것처럼 보이므로 다음 사용자 지정 일치자를 작성했습니다.
RSpec::Matchers.define :match_exactly do |expected_match_count, selector|
match do |context|
matching = context.all(selector)
@matched = matching.size
@matched == expected_match_count
end
failure_message_for_should do
"expected '#{selector}' to match exactly #{expected_match_count} elements, but matched #{@matched}"
end
failure_message_for_should_not do
"expected '#{selector}' to NOT match exactly #{expected_match_count} elements, but it did"
end
end
이제 다음과 같은 작업을 수행 할 수 있습니다.
describe "initial page load", :type => :request do
it "has 12 inputs" do
visit "/"
page.should match_exactly(12, "input")
end
end
다음과 같은 출력을 얻습니다.
1) initial page load has 12 inputs
Failure/Error: page.should match_exactly(12, "input")
expected 'input' to match exactly 12 elements, but matched 13
지금은 트릭을 수행합니다.이 부분을 카피 바라로 만드는 방법을 살펴 보겠습니다.
나는 다음이 더 간단하고 상당히 명확한 출력을 제공하며 커스텀 매 처가 필요하지 않다고 생각합니다.
page.all("ol li").count.should eql(2)
그러면 오류가 표시됩니다.
expected: 2
got: 3
(compared using eql?)
(RSpec::Expectations::ExpectationNotMetError)
편집 : @ThomasWalpole이 지적했듯이 사용 all
하면 Capybara 의 대기 / 재 시도가 비활성화되므로 위의 @pandaPower 답변이 훨씬 낫습니다.
이것은 어떤가요?
within('ol') do
expect( all('.opportunity_title_wrap').count ).to eq(2)
end
Capybara에서 권장하는 현재 (2013 년 9 월 2 일) 모범 사례는 다음과 같습니다 ( 소스 ).
page.assert_selector('p#foo', :count => 4)
@pandaPower의 대답은 매우 좋지만 구문이 약간 달랐습니다.
expect(page).to have_selector('.views-row', :count => 30)
반응형
'Nice programing' 카테고리의 다른 글
웹 API 속성 라우팅의 선택적 매개 변수 (0) | 2020.10.06 |
---|---|
Scala에서 배열을 어떻게 정렬합니까? (0) | 2020.10.06 |
Apache httpd 설정 및 설치 (0) | 2020.10.06 |
파일 또는 어셈블리 'Microsoft.VisualStudio.Web.PageInspector.Loader를로드 할 수 없습니다. (0) | 2020.10.06 |
.NET에 문자열 수학 평가 기가 있습니까? (0) | 2020.10.06 |