[英]Stub Rails UJS/Ajax responses status to test returning message in Rspec/Capybara feature test
我有要測試的由Rails UJS發起的AJAX調用。 具體來說,我已經使用Rails UJS ajax事件來提供錯誤情況。
我想測試他們,但我不知道怎么告訴rspec的/水豚為“存根”,並承擔錯誤代碼
$("button").
on('ajax:error',function(event,xhr, status, error){
if(status == "timeout") {
var msg;
msg = Messenger().post({
message: "This is taking too long"
});
} else {
var msg;
msg = Messenger().post({
message: "it seems there is a bug. Please try again."
});
};
});
我想做以下事情:
describe "test returning error message", js: true do
it "should be successful" do
visit deal_page_path(deal)
first('a.button').click
stub(:xhr.status) = "timeout"
expect(page).to have_content('This is taking too long')
end
end
這個怎么做?
注意:ajax請求是內部的,它們不會訪問第三方API或服務(例如ex的facebook)。
使用Capybara(啟用JS的驅動程序)進行測試時,它無法訪問請求或響應,除非通過在瀏覽器中創建的更改來訪問。 您可以在相關的控制器中構建測試模式,可以對其進行打開和關閉以使其輸出所需的錯誤,但是最簡單的方法可能是使用像puffing-billy這樣的可編程代理,這將使您能夠有選擇地從瀏覽器返回任何給定請求所需的內容。 要意識到的一件事是,這並不是在測試應用程序是否正確返回錯誤,而只是在測試您的前端以您期望的方式處理錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.