chai-superagent
Chaiアサーションを使用したsuperagent統合テスト。
機能
chai-http
の簡略化されたフォーク- esmモジュールのみ、node >= 14をサポート
- 統合テストリクエスト構成
- httpアプリまたは外部サービスのテスト
- 一般的なhttpタスクのアサーション
- chai
expect
とshould
インターフェース
インストール
$ npm install chai-superagent superagent
プラグイン
他のChaiプラグインと同様に、このプラグインを使用してください。 関数呼び出しに注意してください。これは、オプションのパラメータ { strict }: { strict?: boolean }
を受け入れます。strict
がtrueの場合、アサーションはテスト対象のオブジェクトがsuperagent
Request
、Response
、またはAgent
型のインスタンスであることをアサートします。デフォルトはtrue
です。
import { use } from 'chai';
import superagent from 'chai-superagent';
use(superagent());
統合テスト
superagent
を通常どおりに使用し、このライブラリで提供されているアサーションを使用してレスポンスをテストします。
import request from 'superagent';
request
.get('https://:8000/foo')
.then(res => expect(res).to.have.status(200));
アサーション
Chai HTTPモジュールは、expect
とshould
インターフェースに対して多数のアサーションを提供します。
.status (code)
- @param {Number} ステータス番号
レスポンスが指定されたステータスを持っていることをアサートします。
expect(res).to.have.status(200);
.header (key[, value])
- @param {String} ヘッダーキー(大文字と小文字を区別しない)
-
@param _{String RegExp}_ ヘッダー値(オプション)
Response
またはRequest
オブジェクトにヘッダーがあることをアサートします。 値が指定されている場合は、値との等価性がアサートされます。 チェックする正規表現を渡すこともできます。
注: Webブラウザで実行する場合、同一オリジンポリシーでは、Chai HTTPが特定のヘッダーのみを読み取ることができるため、アサーションが失敗する可能性があります。
expect(req).to.have.header('x-api-key');
expect(req).to.have.header('content-type', 'text/plain');
expect(req).to.have.header('content-type', /^text/);
.headers
Response
またはRequest
オブジェクトにヘッダーがあることをアサートします。
注: Webブラウザで実行する場合、同一オリジンポリシーでは、Chai HTTPが特定のヘッダーのみを読み取ることができるため、アサーションが失敗する可能性があります。
expect(req).to.have.headers;
.json / .text / .html
Response
またはRequest
オブジェクトに指定されたcontent-typeがあることをアサートします。
expect(req).to.be.json;
expect(req).to.be.html;
expect(req).to.be.text;
.charset
Response
またはRequest
オブジェクトに指定されたcharsetがあることをアサートします。
expect(req).to.have.charset('utf-8');
.redirect
Response
オブジェクトがリダイレクトステータスコードを持っていることをアサートします。
expect(res).to.redirect;
expect(res).to.not.redirect;
.redirectTo
-
@param _{String RegExp}_ ロケーションURL
Response
オブジェクトが指定されたロケーションにリダイレクトすることをアサートします。
expect(res).to.redirectTo('http://example.com');
expect(res).to.redirectTo(/^\/search\/results\?orderBy=desc$/);
.param
- @param {String} パラメータ名
- @param {String} パラメータ値
Request
オブジェクトに、指定されたキーを持つクエリ文字列パラメータがあり、(オプションで)値と等しいことをアサートします
expect(req).to.have.param('orderby');
expect(req).to.have.param('orderby', 'date');
expect(req).to.not.have.param('limit');
.cookie
- @param {String} パラメータ名
- @param {String} パラメータ値
Request
またはResponse
オブジェクトに、指定されたキーを持つクッキーヘッダーがあり、(オプションで)値と等しいことをアサートします
expect(req).to.have.cookie('session_id');
expect(req).to.have.cookie('session_id', '1234');
expect(req).to.not.have.cookie('PHPSESSID');
expect(res).to.have.cookie('session_id');
expect(res).to.have.cookie('session_id', '1234');
expect(res).to.not.have.cookie('PHPSESSID');
ライセンス
ライセンス権と制限については、LICENSEファイルを参照してください(MIT)。