나는 오이와 카피 바라를 사용하여 내 웹 응용 프로그램의 기본 구성을 테스트하는 기능을 작성했습니다. 기능의 일부는 다음과 같습니다.오이/카피 바라 시험 일반화
And the page has a photo labeled "Device"
And the page has a checkbox labeled "Device"
And I check "Device"
And I submit the form
Then the resulting page has no photo labeled "Device"
위대한 기능을했습니다. 자신의 서버에 웹 응용 프로그램을 설치하고 구성한 사용자가 자신의 구성이 올바른지 확인하는 데 도움이되도록 테스트를 실행할 수 있기를 바랍니다. "장치"는 사용자가 변경할 수있는 기본 구성 파일의 문자열입니다. 그것은 배열의 요소이며, 응용 프로그램의 인스턴스를 구성 할 때 배열에 추가하거나 제거 할 수 있습니다.
이 도구의 합리적인 사용인가 아니면 오이 및/또는 카피 바라를 학대 무엇입니까? 그것이 합리적이라면 어떻게해야할까요? 나쁜 생각이라면 무엇을 위해이 도구 대신 어떤 도구를 사용할 수 있습니까?
다음은 어떻게 작동하는지 보여줍니다. 이 방법이 최선의 방법인지 확신 할 수 없습니다. 이 작업을 수행하려면
이 기능이 더이 같은보고해야합니다 : 해당 단계 정의에서And the page has at least 3 photos, let us call the last one "third_photo"
, 나는 첫 번째 사진에 해당하는 레이블 문자열을 빼고 할당하는 XPath를 사용 클래스 변수에 저장된 Hash 객체.
And /^I the page has at least (\d*) photos, let us call the last one "([^\"]*)"$/ do |n, name|
if ! defined?(@note)
@note = Hash.new;
end
@note[name] = find(:xpath, '//ol[@id="menu"]/li[' +n+ ']/a').text;
end
이제 후속 단계 정의에서 그 값에 액세스 할 수 있습니다.
그래서, 다른 기능을 할 수 있습니다
Then I uncheck "third_item"
그리고 해당 단계 정의는 다음과 같을 수 있습니다
Then /I uncheck "([^\"]*)"/ do |item|
uncheck(@note[item])
end
그러나 나는 그것에 대해 기분이 좋지 않습니다. 그 밖의 것이 없다면 단계 정의 외부에서 정의 된 다른 인스턴스 변수와 이름 충돌이있을 수 있다고 생각합니다. 내가 잘못 작업 수행하거나 다른 내가 잘못된 도구를 사용하고있어 어느 것 같은
그것은 느낀다. 이 작업을 수행하는 올바른 방법은 무엇입니까?
나에 대한 좋은 느낌 아니에요 부분은의 사용이다 클래스 변수는 한 단계 정의에서 다른 단계 정의로 값을 전달합니다. 나는 캡슐화를 깨뜨리고있는 것처럼 느껴진다. 그러나 내가 아는 한 모두, 그것은 실제로 권장되는 접근 방법입니다. – Trott