Chakram学習ノート-基本概念

3505 ワード

Chakramとは
ChakramはAPI testingをより簡単にすることができ、直接分かりやすいE 2 Eテストを書くことができ、JSON REST endpointsの仕事の正確性を保証することができます.ただし、JSON以外のデータフォーマットはサポートされていません.Chakramはnodeに基づく.js、mocha、chai、requestが作成したので、ChakramはBDD式のテストスタイルとpromisesの処理を提供することができます.
全体Chakramには2つの大きなモジュールがあります.
  • chakram-API Testing
  • に使用される多くのHTTPアクションを含む
  • chakram-expectation-拡張chai.expect,HTTP matcherを加えてHTTP関連内容を判断
  • Chakramの主な特徴
  • HTTP関連の検証を提供
  • status codeの検証
  • 検証クッキー
  • 検証ヘッダー
  • JSONとschemaの検証
  • 検証compression
  • 検証応答時間
  • mochaとchaiに基づくBDDのスタイル
  • promiseフレンドリー
  • カスタム検証
  • Chakramのインストール運転Chakramの実行にはnodejs環境が必要であり,npm install --save-dev chakramを介してChakramをdevelopment dependencyとしてプロジェクトに組み込むことができる.MochaChakramテストを実行するために使用されるため、Mochaの各種機能はChakramとともに使用することができる.本質的には、ChakramをAPI Testingのライブラリと見なすことができ、テストフレームワークの本質はMochaである.
    機能紹介HTTP specific assertionChakramAPI Testingで最も一般的な機能を提供する-HTTP requestおよびresponse検証.Chakramリクエスト処理のライブラリとしてrequest libraryを使用し、このライブラリ(as a helper)に基づいて、一般的なHTTP requestメソッドを上書きするための多くの簡単で使いやすい方法が提供されています.
    発起依頼HTTP GETchakram.get(url, params)HTTPリクエストが開始されました.戻り値は、HTTPリクエストの結果をカプセル化したChakramResponseオブジェクトです.
    responseの検証Chakramは、chai,Chakramexpectインタフェースと同様に、多くのresponseを検証する方法を提供し、BDDスタイルの検証方法を提供する.我々はresponseをパラメータとしてchakram.expectに渡し,次にChakramで提供された検証方法を用いるだけでよい.可読性は、Chaiによって提供されるchains getterを使用してもよい.responseが受け入れられると、検証はすぐに開始されます.
    また、Chakram.expectChaiのすべての属性と検証方法を継承し、任意に使用することができる.
    Waiting
    言語とライブラリの特殊性のため、API testingはこの時点で非同期で実行されます.ChakramMochaに基づいているため、非同期モードも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");
        })
      });
    });