2016-08-27 5 views
0

내 사이트에는 수십 개의 "link_to"인스턴스가있었습니다. 더 나은 모양을 위해 대부분을 "button_to"로 변경하기로 결정했습니다. 그 링크의 존재를 확인하는 데 사용되는 테스트의 라인은 더 이상 좋지 않습니다. button_to 인스턴스를 찾기 위해 테스트를 조정하는 방법이레일 : 버튼이 있는지 테스트 할 수 있습니까?

assert_select "a", :href => user_path(@seminar.teacher), text: "Your Teacher Profile", count: 2 

시험은

assert_select "button", etc... 

제대로 작동하지 않는 있습니까? 나의 처음 수색에서, 거기 같이 보이지 않는다.

나는 단순히 표시 항목의 존재 여부를 테스트하는 것이 레일 테스트를 사용하는 매우 유용한 방법은 아니라는 다른 기사를 읽었 기 때문에 테스트에서 해당 줄을 자르는 것을 고려하고 있습니다.

사전 통찰력에 감사드립니다!

+0

을 수행하십시오. (하지만 button_to를 추가하면 기본적으로 post_request가 link_to가 기본적으로 요청을받습니다.) –

+0

처음에 스타일을 시도했습니다. 그러나 그것이 방문 된 후에 나는 링크의 출현으로 고투하고 있었다. 방문한 스타일이 제대로 작동하도록 할 수 있다면 "link_to"로 돌아가시겠습니까? –

답변

1

링크 존재 여부 만 테스트하는 테스트를 제거합니다. 이러한 버튼을 클릭하는 테스트를 작성하고 버튼을 클릭 한 후 발생하는 상황을 테스트하는 것이 좋습니다. 사용자는 페이지의 단추가있는 것보다 단추를 클릭 할 때 일어나는 일에 대해 더 신경을 씁니다.

+0

나는 페이지의 버튼을 클릭하는 것을 시뮬레이션하기 위해 테스트를 수행 할 방법을 찾고 있었다. 이 유형의 테스트를 다루는 기사 또는 자습서를 알고 계십니까? 또는 기사를 검색 할 수 있도록 이러한 테스트의 구문을 알고 있습니까? –

+0

Capybara는 이것을 테스트하는 데 널리 사용되는 도구입니다. – kcdragon

+0

예. 카피 바라는 내가 원하는 것을 정확하게 보여줍니다. 고맙습니다! –

1

다음은 Rails의 기본 테스팅 프레임 워크 MiniTest를 사용하여 button_to가 있는지 테스트하는 한 가지 방법입니다.

<%= button_to 'Change status to Inactive', membership_path(@membership), method: :patch, 
    params: { 'membership[status]' => 'Inactive'} %> 

당신은 (HTML을 볼 크롬에서 마우스 오른쪽 버튼 요소를 클릭하여 웹 브라우저에서보기를 검사하는 경우 :이 예에서 은 회원 자격을 변경하는 회원의 쇼 페이지에서 버튼이 비활성 상태로있다 Inspect를 선택하면 실제로 button_to가 양식이라는 것을 알 수 있습니다. 따라서 특정 membership_path와 같은 작업 속성을 가진 양식 요소의 존재 여부를 테스트 할 수 있습니다. 또한 버튼의 텍스트가 있는지 테스트하기 위해 당신이 원하는 경우

membership = Membership.first 
assert_select 'form[action=?]', membership_path(membership.id) 

는 블록 또한 버튼처럼 보이도록 LINK_TO에 약간의 스타일을 추가 할 수 있습니다

membership = Membership.first 
assert_select 'form[action=?]', membership_path(membership.id) do 
    assert_select 'input[value=?]', 'Change status to Inactive' 
end