2012-01-06 3 views
3

Soo, Capybara가 DOM과 인터페이스 할 수 있고 내 앱이 AJAX를 통해 양식을 제출하고 JSON을 반환하면 Capybara가이를 볼 수 있습니까? Capybara API에서 AJAX 응답을받을 방법이 없습니다. 여기 Capybara click_button이 작동하지만 JSON 응답을 어떻게 평가합니까?

이의 예 좀 내가 무엇을하고 있어요 :

# Cucumber step_definition 
Then(/^I should be able to create a household$/) do 
    click_link 'Next' 
    page.should have_selector 'form#household-form' 
    fill_in 'Name', with: name = Faker::Name.last_name 
    click_button 'Create' 
    page.wait_until do 
    page.evaluate_script('$.active') == 0 # really awesome hack to wait for ajax 
    end 
    @user.reload.households.first.name.should eq name 
end 

차라리 그 결과를 테스트하기 위해 데이터베이스를 다시 공격하지 않고 대신 같은 것을 할 거라고 : 확인

xhr.response_data.should be_json 

을 내 json 응답이 있어야한다고 생각한 것입니다.

나는 단지 오이와 카피 바라에 익숙해지기 위해 여기서 실험하고있다.

+0

그래서 나는 이것이 불가능하다고 생각합니까? – wulftone

+0

나는 같은 질문을 가지고있다. 그 동안 어떤 정보를 찾았습니까? –

답변

3

당신은 @javascript에 태그를 추가하여 자바 스크립트 기능으로 실행하는 시나리오/기능을 표시해야합니다 :이 무엇을 할 것 인

@javascript 
Scenario: Title goes here 

진짜 시작됩니다 셀레늄 webdriver 보석을 실행하기 위해 오이를 알리는 것입니다 브라우저 (Firefox)를 열고 브라우저에서 테스트를 실행하십시오. 브라우저는 물론 자바 스크립트를 평가 한 다음 카피 바라가 출력 한 내용을 볼 수 있습니다.

+0

그래, 이미 시나리오 정의 위에'@ javascript'가 있습니다. JSON 응답이 발생한 후에 어떻게 얻을 수 있는지 알고 싶을뿐입니다. (그리고 아마 프로세스에서 DOM 이벤트를 추적 할 수도 있습니다.) AJAX 응답은 페이지의 어떤 것에도 영향을 미치지 않으므로'page '를 사용하여 어떤 일이 일어 났는지 평가할 수는 없습니다. – wulftone

관련 문제