2011-08-12 2 views
2

내가 일하고있는 DOM에 대해 알고있는 나의 오이 webrat BDD suite에 다른 추상화 레이어를 적용하는 데 관심이 있습니다.rspec, 오이 위에 내 자신의 DSL

현재 내가 단계는이 예처럼 뭔가있는 정의를 쓰고 :

response_body.should have_selector("div", :id => 'left-side-bar') do |div| 
    div.should have_selector("h1", :content => 'Hello') 
    ... other stuff 
end 

내가 XPath와 다양한 다른 방법으로이 작업을 수행 할 수 있습니다 알고을하지만 난 이런 식으로 내 자신의 DSL을 사용하려면 :

left_sidebar.should have_heading("Hello") 

기본적으로 내 클라이언트가 DSL에서 메뉴 항목, 블록 또는 위젯 항목, 열, 머리글 꼬리말 등을 요구하는 프로젝트 관련 항목을 나타내려고합니다.

어떻게하면됩니까? 실용적인가요? 내 응용 프로그램 (이 중요한 경우)

답변

4

이 페이지 개체 패턴처럼 많은 소리 레일 응용 프로그램이 아닙니다 :

http://code.google.com/p/selenium/wiki/PageObjects

을 확실히 실천, 그리고 프로젝트가 아닌 차이가 없습니다 레일 앱.

기본적으로 테스트중인 사이트의 페이지 구성 요소를 모델링하는 개체 묶음을 정의하고 해당 개체의 페이지 콘텐츠에 액세스하는 방법을 제공해야합니다. 한 가지 장점은 페이지 마크 업에 대한 모든 지식이 이러한 객체에 보관된다는 점입니다. 따라서 페이지의 마크 업이 변경되면 한 번만 업데이트하면됩니다.

예를 들어, 페이지에 HTML 테이블을 배치하고 오이 단계에서 쉽게 비교할 수 있도록 해시 배열로 변환하는 유용한 도우미 메서드가 포함되는 경향이 있습니다.

+1

아주 좋은 답변입니다. PageModel은 여기에서 필요한 것입니다. – iafonov

+0

예, 많은 감사합니다. – Rimian