2009-10-26 2 views
1

저는 Cucumber와 Webrat를 시작하면서 기존 Rails 응용 프로그램에 기능 사양을 추가하려고합니다. 앱의 한 페이지에는 여러 개의 양식이 있으며 새로운 문자 개체를 만드는 다양한 방법을 나타냅니다. 여기에 간단한 예입니다 :여러 명이 같은 이름과 ID를 공유하면 Webrat의 특정 필드를 어떻게 채울 수 있습니까?

<form id="adopt_character_form"> 
    .... 
    <input type="text" name="character[name]" id="character_name"> 
    ... 
</form> 

<form id="spawn_character_form"> 
    .... 
    <input type="text" name="character[name]" id="character_name"> 
    ... 
</form> 

당신이 볼 수 있듯이, 거기에 서로 다른 형태로, 그리고 나는를 찾을 수 있지만, 페이지의 같은 이름과 ID를 가진 두 개의 필드 (적어도) 방법으로 Webrat rdoc이나 소스 코드에서 특정 것을 지정하십시오.

그 중 하나에서 이름이나 ID를 변경할 수 있음을 알고 있지만 레일스 명명 규칙에서 벗어나야합니다. 실제로는 그렇지 않습니다. 양식을 다른 페이지에 배치 할 수도 있지만 작업 흐름을 원하는 것보다 더 많이 수정해야합니다. 또한 더 모듈화되고 동적 인 단일 형식으로 병합하려고 시도 할 수도 있지만 주어진 테스트 프레임 워크를 지원하기 위해 UI를 구조적으로 변경해야하는 것은 약간의 의구심이 들며 항상 실현 가능하지는 않을 수도 있습니다. 자바 스크립트가 필요합니다.

Webrat에서 이러한 필드 중 하나를 지정하는 방법이 있습니까? 아니면 그냥 다른 프로젝트에서 Cucumber를 포기하고 시도해야합니까?

답변

1

당신은 단계

을하는 데 도움이

#my_steps 
Then /^I update character name with "([^\"]*)"$/ do |updated_character| 
    within '#adopt_character_form' 
    fill_in "character[name]", :with => updated_character 
    end 
end 

희망을 파일 오이 예를 들어 webrats within 방법

을 사용할 수 있습니다

1

동일한 ID를 가진 여러 요소가 HTML 유효성을 명시 적으로 위반한다는 점을 고려하면 이미 레일스 규칙의 경로에서 벗어난 것 같습니다. 최근 버전의 Rails는 일반적으로 표준을 준수하도록 노력합니다. IIRC에서는 ID가 차별화되도록 양식 헬퍼를 호출하는 것이 매우 간단합니다. 아무것도 없다면 각 호출마다 명시적인 ID를 제공 할 수 있습니다. 레일 규칙의 목적을 위해, name 필드는 레일스가 모델의 필드 이름으로 다시 매핑해야하는 필드이기 때문에 중요합니다.