chai-superagent

Travis npm package Coverage Status

Chaiアサーションを使用したsuperagent統合テスト。

機能

  • chai-httpの簡略化されたフォーク
  • esmモジュールのみ、node >= 14をサポート
  • 統合テストリクエスト構成
  • httpアプリまたは外部サービスのテスト
  • 一般的なhttpタスクのアサーション
  • chai expectshould インターフェース

インストール

$ npm install chai-superagent superagent

プラグイン

他のChaiプラグインと同様に、このプラグインを使用してください。 関数呼び出しに注意してください。これは、オプションのパラメータ { strict }: { strict?: boolean }を受け入れます。strictがtrueの場合、アサーションはテスト対象のオブジェクトがsuperagent RequestResponse、または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モジュールは、expectshouldインターフェースに対して多数のアサーションを提供します。

.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');
  • @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)。