2010-08-23 4 views
0

그래서 스테이크를 사용하기 시작했습니다. 스테이크는 Capybara를 사용하며 차례로 Selenium을 사용합니다.브라우저 상태를 재설정하지 않고 여러 RSpec/Selenium 테스트를 순서대로 실행할 수 있습니까?

그래서 저는 RSpec 연습을 테스트를 여러 개의 작은 it-clauses로 나누는 것에 대해 들었습니다. 각각은 작은 기능을 테스트합니다. 그런 다음 동일한 단계가 각 테스트마다 반복되기 때문에 테스트 실행 시간이 오래 걸릴 수 있습니다.

아약스의 기능을 테스트하고 있습니다. 내가 유효한 입력을 제출하면 확인 메시지가 나타납니다 형태

  • 등으로 잘못된 입력을 제출하면 내가
  • 오류 메시지가 표시 특정 링크를 클릭 할 때

    • 형태가 나타납니다 : 나는 그것을 테스트 할 나는 그것의 자신의 테스트 케이스에 깨진 것들의 각이있는 경우

    는하지만, 다음 셀레늄 처음부터 시작해야합니다 : 그것은 형태가 세 번 나타날 수 있도록 링크를 클릭, 같은 페이지를 세 번로드 할 수있다, 그것은 낭비로 나를 때린다.

    내가 할 수있는 일은 브라우저 상태를 유지하는 테스트 순서를 지정하는 것이므로 이전 테스트가 중단 된 곳에서 각 테스트가 계속됩니다. 그게 가능하니?

  • 답변

    1

    가능합니다. 한 가지 방법은 카피 바라의 방문 방법을 무시하고 마지막 URL을 추적하고 변경 될 때 다시 방문하는 것입니다. 의 라인을 따라

    뭔가 :

    module Capybara 
        alias original_visit visit 
        def visit(url) 
        original_visit url if url != $last_url 
        $last_url = url 
        end 
    end 
    

    하지만해야 단지 당신이 정말 당신이 무엇을하고 있는지 알고 있다면 ...

    +0

    마지막 문장은 수술이라고 할. ;-) 이것은 페이지의 상태가 어떤 식 으로든 변경 될 때마다 분명히 미묘한 방식으로 실패합니다. 따라서이 방법을 시도하는 것이 더 바람직합니다. (방문 방법은 Capybara :: Session으로 진행할 것이라고 생각합니다.) –