Webhook をテストする

Webhook の開発中に、実際のビジネス メッセージのペイロードを使用してテストすることをおすすめします。テストを手動で作成する代わりに、ビジネス メッセージ テスト フレームワークを使用して、本番環境で Webhook が受け取る可能性のあるさまざまな JSON ペイロード タイプで Webhook をテストできます。

必要なのは、Webhook の実行中のインスタンスの URL だけです。テスト フレームワークは簡単にインストールでき、1 つのコマンドで Webhook をテストできます。

使用を開始する

フレームワークをインストールする

このフレームワークをインストールする最も簡単な方法は、NPM パッケージ マネージャーを使用することです。フレームワークは NPM パッケージ レジストリで公開されているため、npm でインストールできます。

npm install -g bm-test-framework

テストを実行する

パッケージをインストールしたら、Webhook URL を環境変数として提供し、すべてのテストを次のコマンドで実行できます。

BMTF_ENDPOINT_URL=<Your webhook URL> bm-test-framework

テスト フレームワークの結果は次のようになります。

  Sending payloads to <Your webhook URL>
      ✔ authentication-request.json should return 200
      ✔ event-receive.json should return 200
      ✔ image-message.json should return 200 (862ms)
      ✔ read-receipt.json should return 200
      ✔ suggestion-message.json should return 200
      ✔ text-message.json should return 200 (134ms)
      ✔ text-with-dialogflow-response.json should return 200 (128ms)
      ✔ user-receipt.json should return 200

この例のテスト実行では、すべてのテストケースに合格しています。

テストケースのいずれかで Webhook が失敗した場合、Webhook はそのテストケース JSON ペイロードに対して 200 OK で応答しません。その場合、テスト フレームワークはデバッグに役立つエラー情報を出力します。特定のテストケースの詳細については、テスト フレームワークの README をご覧ください。

NodeJS プロジェクトでフレームワークを使用する

NodeJS プロジェクトの独自のコード内、または Mocha テストスイート内からフレームワークを使用するには、まず、開発の依存関係としてパッケージをインストールします。

npm install --save-dev bm-test-framework

インストールが完了したら、次のように BmTestFramework オブジェクトを作成してテストを管理できます。

const BmTestFramework = require('bm-test-framework');
const bmTestFramework = new BmTestFramework({endpointURL: <Your webhook URL>});

payloads メンバー配列には、すべてのテストケースが含まれます。sendPayload メソッドを使用して、特定のテストを実行できます。たとえば、次のコードはフレームワークで最初のテストを実行します。

bmTestFramework.sendPayload(bmTestFramework.payloads[0])

テストを設定する

必要な BMTF_ENDPOINT_URL 環境変数に加えて、オプションの環境変数を設定して、テスト動作をカスタマイズすることもできます。

環境変数 構成フィールド名 説明
BMTF_RANDOM_UUID randomUuid boolean true の場合、会話 ID を有効な形式でランダム化された UUID に設定します。false の場合、すべての会話 ID を &CONtERSATION-ID" に設定します。
BMTF_TIMEOUT timeout 数値または書式付きの時間文字列 テストケースごとにタイムアウトをミリ秒単位で設定します。デフォルトのタイムアウトは、テストケースごとに 2,000 ミリ秒です。詳細なタイプと形式の仕様については、Mocha API リファレンスをご覧ください。

たとえば、次のコードは、ランダムな UUID オプションを有効にし、タイムアウトを 1, 000 ミリ秒に設定してコマンドラインからテスト フレームワークを実行します。

BMTF_ENDPOINT_URL=<Your webhook URL> BMTF_TIMEOUT=1000 BMTF_RANDOM_UUID=true bm-test-framework

NodeJS プロジェクトでテスト動作をカスタマイズするには、BmTestFramework の作成時に同じ変数を config オブジェクトに渡すこともできます。

const bmTestFramework = new BmTestFramework({endpointURL: <Your webhook URL>, randomUuid: true, timeout: 1000});