簡體   English   中英

如何在測試AJAX應用程序時測試斷開連接?

[英]How to test a disconnection when testing an AJAX application?

我正在測試一個AJAX應用程序,我們需要處理暫時失去與服務器的連接或其他錯誤(例如在Gmail或Google日歷中)。在測試中模擬這個的好方法是什么?

例如,是否有一個瀏覽器插件可以暫時“關閉”標簽的互聯網連接? 我在Chrome中進行所有調試,因此如果有人可以為該瀏覽器提供建議,那將會特別有用。

我嘗試過的其他選項是將VM的網絡連接切換到服務器,或者關閉服務器並重新啟動它,這些都不是非常輕量級或易於測試(后者也不保留任何狀態。)

澄清:我對如何在測試代碼中測試斷開處理感興趣。 我想在運行我的應用程序時創建斷開連接以進行測試。 理想情況下,它可能是我的瀏覽器的一個選項卡中容易切換的東西,不涉及borking我的整個互聯網連接。

在這個問題上,了解您使用哪個框架進行測試將是一件非常好的事情。 對於其余部分,如果AJAX內容由XMLHttpRequest對象處理,那么您可以做的很少,因為一旦請求被觸發,您就無法再控制它了。 如果您使用的是jQuery等框架,請考慮對事件進行juking。 這涉及以合成方式發射事件。 為了做到這一點,如果您的事件處理程序在范圍內是公共的(如果您編寫可維護的代碼,它們應該是公共的),您應該能夠觸發它們。 如果沒有,請公開。

如果不這樣做,您可以通過以下方式在服務器端執行操作:

  1. 設置服務器在特定時間斷開連接的“測試模式”
  2. 考慮通過可配置代理(nginx?)進行路由,以有效地實現步驟1,而無需修改服務器
  3. 通過合成而不是事件來自動解除斷開連接處理程序。 您知道XMLHttpRequest失敗的事件處理程序正在運行 - 您的瀏覽器確保沒有錯誤。 您需要測試的是您的功能是否有效。

當我們過去必須這樣做時,我們通常會打開nic設置並禁用適配器。 一些有筆記本電腦的家伙會在有線連接上運行,只需拔下插頭即可。

你也可以使用netsh:

netsh interface set interface <interface name> DISABLED/ENABLED 

我不知道任何現成的解決方案,但我知道如何實現這一目標。

如果您的服務器在Linux上運行,您可以編寫一個簡單的腳本,該腳本會向iptables添加規則,阻止ip或tcp級別的流量。 然后運行腳本以阻止解鎖流量。

我會在不同的端口上設置一個虛擬主機,放置一些腳本來阻止allt raffic,解鎖流量,限制等,然后將這些腳本添加到書簽以便快速運行它們。 這些腳本只會使用不同的參數調用iptables。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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