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
物件具有標頭。如果提供了值,則將會斷言與該值相等。您也可以傳遞正規表示式來檢查。
注意:在網頁瀏覽器中執行時,由於同源政策,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
物件具有標頭。
注意:在網頁瀏覽器中執行時,由於同源政策,Chai HTTP 只能讀取特定標頭,這可能會導致斷言失敗。
expect(req).to.have.headers;
.json / .text / .html
斷言 Response
或 Request
物件具有指定的內容類型。
expect(req).to.be.json;
expect(req).to.be.html;
expect(req).to.be.text;
.charset
斷言 Response
或 Request
物件具有指定的字元集。
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');
.cookie
- @param {String} 參數名稱
- @param {String} 參數值
斷言 Request
或 Response
物件具有帶有指定鍵的 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)。