Chakram学習ノート-基本概念
3505 ワード
Chakramとは
ChakramはAPI testingをより簡単にすることができ、直接分かりやすいE 2 Eテストを書くことができ、JSON REST endpointsの仕事の正確性を保証することができます.ただし、JSON以外のデータフォーマットはサポートされていません.
全体 に使用される多くのHTTPアクションを含む Chakramの主な特徴HTTP関連の検証を提供 status codeの検証 検証クッキー 検証ヘッダー JSONとschemaの検証 検証compression 検証応答時間 mochaとchaiに基づくBDDのスタイル promiseフレンドリー カスタム検証 Chakramのインストール運転
機能紹介HTTP specific assertion
発起依頼HTTP GET
responseの検証
また、
Waiting
言語とライブラリの特殊性のため、API testingはこの時点で非同期で実行されます.
Complex Promise Use
chakramはreturn valueとしてpromisesを大量に使用しているため,
Example
以上、最も簡単なリクエストの発行とresponseの検証の例を以下に示す.
ChakramはAPI testingをより簡単にすることができ、直接分かりやすいE 2 Eテストを書くことができ、JSON REST endpointsの仕事の正確性を保証することができます.ただし、JSON以外のデータフォーマットはサポートされていません.
Chakram
はnodeに基づく.js、mocha、chai、requestが作成したので、Chakram
はBDD式のテストスタイルとpromisesの処理を提供することができます.全体
Chakram
には2つの大きなモジュールがあります.chakram
-API Testingchakram-expectation
-拡張chai.expect
,HTTP matcherを加えてHTTP関連内容を判断Chakram
の実行にはnodejs環境が必要であり,npm install --save-dev chakram
を介してChakram
をdevelopment dependencyとしてプロジェクトに組み込むことができる.Mocha
はChakram
テストを実行するために使用されるため、Mocha
の各種機能はChakram
とともに使用することができる.本質的には、Chakram
をAPI Testingのライブラリと見なすことができ、テストフレームワークの本質はMocha
である.機能紹介HTTP specific assertion
Chakram
API Testingで最も一般的な機能を提供する-HTTP requestおよびresponse検証.Chakram
リクエスト処理のライブラリとしてrequest libraryを使用し、このライブラリ(as a helper)に基づいて、一般的なHTTP requestメソッドを上書きするための多くの簡単で使いやすい方法が提供されています.発起依頼HTTP GET
chakram.get(url, params)
HTTPリクエストが開始されました.戻り値は、HTTPリクエストの結果をカプセル化したChakramResponseオブジェクトです.responseの検証
Chakram
は、chai
,Chakram
のexpect
インタフェースと同様に、多くのresponseを検証する方法を提供し、BDDスタイルの検証方法を提供する.我々はresponseをパラメータとしてchakram.expect
に渡し,次にChakram
で提供された検証方法を用いるだけでよい.可読性は、Chai
によって提供されるchains getter
を使用してもよい.responseが受け入れられると、検証はすぐに開始されます.また、
Chakram.expect
はChai
のすべての属性と検証方法を継承し、任意に使用することができる.Waiting
言語とライブラリの特殊性のため、API testingはこの時点で非同期で実行されます.
Chakram
はMocha
に基づいているため、非同期モードもpromiseもサポートされています.Mocha
では、it()
にコールバック関数を加えることで、it()
がこのコールバック関数が実行されるまでテストを終了することができる.promiseについては、it()
に直接戻る必要がある.Chakram
では、it()
で返されたpromiseオブジェクトによって、テスト待機要求と検証の完了が保証されます.chakram.wait
は、すべてのリクエストと検証が完了するまでテストが終了することを保証するために使用されます.Chakram
は、検証の終了を待機していないすべてのテストにも失敗します.chakram.wait()
戻り値はpromiseオブジェクトであり、すべての検証が完了すると、このpromiseオブジェクトは実装されます.Complex Promise Use
chakramはreturn valueとしてpromisesを大量に使用しているため,
(new Promise()).then()
のようなchains法を用いて要求と検証を記述することができる.Example
以上、最も簡単なリクエストの発行とresponseの検証の例を以下に示す.
var chakram = require('../node_modules/chakram/lib/chakram.js'),
expect = chakram.expect;
const testURL = "https://api.douban.com/v2/movie/subject/26363254";
describe("I can get movie information from douban", function () {
it("should have year 2017 for movie Wolf Warrior 2", function () {
let response = chakram.get(testURL);
expect(response).to.have.status(200);
expect(response).to.have.header('content-type', 'application/json; charset=utf-8');
expect(response).to.comprise.of.json({
"year": "2017"
});
return chakram.wait();
});
it('should have Wu Jing Starring', function(){
return chakram.get(testURL).then(function(response){
let expected_id = response.body.casts[0].id;
expect(expected_id).to.equal("1000525");
})
});
});