ネットワークレスポンスのインターセプト
概要
ウェブサイトのテスト中に、ウェブサイトが特定のURLにHTTPリクエストを送信するケースがありますが、テスト実行中にそのURLにリクエストを送信せず、代わりにそのURLからのレスポンスをモックしたい場合があります。Nightwatchを使用すると、それが可能になりました。
Selenium 4で利用可能になったChrome DevTools Protocol のサポートにより、NightwatchはHTTPリクエストのインターセプトと、特定のURLからのレスポンスのモックをサポートするようになりました。
このコマンドは、Google ChromeやMicrosoft EdgeなどのChromiumベースのブラウザでのみ機能します。
モックネットワークレスポンス
このコマンドを使用すると、特定のURLからのHTTPレスポンスをモックできます。このコマンドを実行した後、HTTPリクエストのURLがコマンドに渡されたURLと厳密に一致するたびに、リクエストはインターセプトされ、提供されたモックがレスポンスとしてブラウザに送り返されます。
必要なパラメータを使用して、ウェブサイトに移動する前に`browser.mockNetworkResponse()`コマンドを呼び出すだけです。
`mockNetworkResponse()`は、最初の引数として`url`(文字列型)、2番目の引数として`response`オブジェクトを受け取ります。`response`オブジェクトの仕様は以下のとおりです。
キー | 型 | デフォルト | 説明 |
---|---|---|---|
status |
数値 | 200 | モックレスポンスのHTTPステータス。 |
headers |
オブジェクト | {} |
モックレスポンスのHTTPヘッダー。 例: `headers = {'Connection': 'Keep-Alive', 'Content-Type': 'UTF-8'}` |
body オプション |
文字列 | '' |
モックレスポンスの本文。 |
例
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);
});
});