2012-01-06 44 views
3

很好,如果Capybara可以與DOM接口,並且我的應用程序通過AJAX提交表單並返回一些JSON,那麼Capybara可以看到這些嗎?我沒有找到任何方式在Capybara API中獲得AJAX響應。水豚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 2012-01-13 20:33:06

+0

我有同樣的問題。你有沒有同時找到任何信息? – 2012-11-01 08:23:28

回答

3

你應該標記您的方案/功能,作爲一個JavaScript功能,通過標記它@javascript運行:

@javascript 
Scenario: Title goes here 

這是什麼會做的是告訴黃瓜運行硒webdriver的寶石,將推出一個真正的瀏覽器(Firefox)並在該瀏覽器內運行測試。瀏覽器當然會評估JavaScript,然後Capybara將能夠看到它輸出的內容。

+0

是的,我已經在場景定義之上有'@ javascript',這一切都很好,除了我想知道如何在發生JSON響應後(並且可能跟蹤過程中的dom事件)。 AJAX響應不會影響頁面上的任何內容,所以我不能使用「頁面」來評估發生的事情。 – wulftone 2012-01-06 05:58:21