概觀

在測試您的網站時,可能會發生您的網站將 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);
  });
});