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 RequestResponseAgent 類型的實例。預設值為 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}_ 標頭值(可選)

斷言 ResponseRequest 物件具有標頭。如果提供了值,則將會斷言與該值相等。您也可以傳遞正規表示式來檢查。

注意:在網頁瀏覽器中執行時,由於同源政策,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

斷言 ResponseRequest 物件具有標頭。

注意:在網頁瀏覽器中執行時,由於同源政策,Chai HTTP 只能讀取特定標頭,這可能會導致斷言失敗。

expect(req).to.have.headers;

.json / .text / .html

斷言 ResponseRequest 物件具有指定的內容類型。

expect(req).to.be.json;
expect(req).to.be.html;
expect(req).to.be.text;

.charset

斷言 ResponseRequest 物件具有指定的字元集。

expect(req).to.have.charset('utf-8');

.redirect

斷言 Response 物件具有重新導向狀態碼。

expect(res).to.redirect;
expect(res).to.not.redirect;

.redirectTo

  • @param _{String RegExp}_ 位置網址

斷言 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} 參數值

斷言 RequestResponse 物件具有帶有指定鍵的 cookie 標頭,(可選)等於值

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)。