攔截網路回應
概觀
在測試您的網站時,可能會發生您的網站將 HTTP 請求傳送到特定 URL 的情況,但您不希望在測試執行期間將請求傳送到該 URL,而是只想模擬該 URL 的回應。現在可以使用 Nightwatch 做到這一點。
由於 Selenium 4 現在提供 Chrome DevTools 協定支援,Nightwatch 現在支援攔截 HTTP 請求並模擬特定 URL 的回應。
此命令僅適用於基於 Chromium 的瀏覽器,例如 Google Chrome 和 Microsoft Edge。
模擬網路回應
此命令可讓您模擬特定 URL 的 HTTP 回應。執行此命令後,每當 HTTP 請求的 URL 與傳遞至命令的 URL 完全符合時,請求就會被攔截,並將提供的模擬作為回應傳回瀏覽器。
您只需要在導覽至您的網站之前,使用所需的參數呼叫 browser.mockNetworkResponse()
命令即可。
mockNetworkResponse()
接受 url
(string
類型) 作為第一個引數,並接受 response
物件作為第二個引數。response
物件的規格如下
鍵 | 類型 | 預設 | 描述 |
---|---|---|---|
status |
number | 200 | 模擬回應的 HTTP 狀態。 |
headers |
object | {} |
模擬回應中的 HTTP 標頭。 例如: headers = {'Connection': 'Keep-Alive', 'Content-Type': 'UTF-8'} |
body optional |
string | '' |
模擬回應的主體。 |
範例
tests/mock-network-response.js
describe('mock network response', function() {
it('intercepts the request made to Google search and mocks its response', function() {
browser
.mockNetworkResponse('https://www.google.com/', {
status: 200,
headers: {
'Content-Type': 'UTF-8'
},
body: 'Hello there!'
})
.navigateTo('https://www.google.com/')
.pause(2000);
});
});