第227章 Mock コンポーネント

Camel バージョン 1.0 以降で利用可能

分散処理と非同期処理のテストは、非常に難しいことで知られています。MockTest、および DataSet エンドポイントは Camel テストフレームワークとうまく連携し、エンタープライズ統合パターン と Camel の幅広いコンポーネントを強力な Bean 統合と共に使用して、ユニットと統合のテストを簡素化します。

モックコンポーネントは強力な宣言型テストメカニズムを提供します。これは、テスト開始前に任意のモックエンドポイントで宣言型期待値を作成できるという点で jMock に似ています。次に、テストが実行され、通常は 1 つ以上のエンドポイントにメッセージが送信されます。最後に、システムが期待どおりに機能することを確認するために、テストケースで期待値をアサートできます。

これにより、次のようなさまざまなことをテストできます。

  • 各エンドポイントで正しい数のメッセージが受信されます。
  • 正しいペイロードが正しい順序で受信され、
  • メッセージは、いくつかの式を使用して順序テスト関数を作成し、エンドポイントに順番に到着します。
  • 到着したメッセージは、特定のヘッダーに特定の値があるなど、ある種の述語に一致するか、XPath または XQuery 式を評価するなどして、メッセージの一部が何らかの述語に一致します。
注記

モックエンドポイントである テストエンドポイント もありますが、2 番目のエンドポイントを使用して、予想されるメッセージ本文のリストを提供し、モックエンドポイントアサーションを自動的に設定します。つまり、たとえば File や database 内のいくつかのサンプルメッセージからアサーションを自動的にセットアップするモックエンドポイントです。

注意

モックエンドポイントは、受信した Exchange を無期限にメモリーに保持します。

Mock はテスト用に設計されていることを思い出してください。モックエンドポイントをルートに追加すると、エンドポイントに送信された各 Exchange は、明示的にリセットするか、JVM を再起動するまで、(後で検証できるようにするために) メモリーに格納されます。大量のメッセージや大きなメッセージを送信すると、メモリーが過剰に使用される可能性があります。デプロイメント可能なルートをインラインでテストすることが目標の場合は、モックエンドポイントをルートに直接追加する代わりに、テストで NotifyBuilder または AdviceWith を使用することを検討してください。

Camel 2.10 以降では、Mock エンドポイントがメモリーに保持するメッセージの数を制限するために使用できる、retainFirstpreserveLast の 2 つの新しいオプションがあります。

227.1. URI 形式

mock:someName[?options]

someName は、エンドポイントを一意に識別する任意の文字列にすることができます。

URI には、?option=value&option=value&…​ の形式でクエリーオプションを追加できます。