簡體   English   中英

Stub Rails UJS / Ajax響應狀態以測試Rspec / Capybara功能測試中的返回消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM