Spy イベントプロセッサー

Spy プロセッサーでは、イベントプロセッサーのコール前後で何が起きているかを監視できます。
これにより、たとえば、選択した Mule イベントが、特定のペイロードまたは変数を含む特定のイベントプロセッサーに達したことを検証できます。

Spy プロセッサーを設定すると、監視されているイベントプロセッサーの実行前または後に一連の手順 (通常はアサーションまたは検証) を実行するよう MUnit に指示されます。

次の設定があるとします。

<flow name="testFlow">
  <http:request path="/my/api" />
</flow>

任意の HTTP 要求を監視するように Spy プロセッサーを設定し、コンポーネントに達する前のペイロードが null であり、処理後にペイロードが null 以外になっていることを確認できます。

<munit:test name="suiteTest" >

  <munit:behavior >

    <munit-tools:spy processor="http:request">
      <munit-tools:before-call >
        <munit-tools:assert-that expression="#[payload]" is="#[MunitTools::nullValue()]"/>
      </munit-tools:before-call>
      <munit-tools:after-call >
        <munit-tools:assert-that expression="#[payload]" is="#[MunitTools::notNullValue()]"/>
      </munit-tools:after-call>
    </munit-tools:spy>

  </munit:behavior>

</munit:test>

また、パスが「/my/api」である任意の HTTP 要求を監視することもできます。

<munit:test name="suiteTest" >

  <munit:enable-flow-sources >
    <munit:enable-flow-source value="testFlow" />
  </munit:enable-flow-sources>

  <munit:behavior >

    <munit-tools:spy processor="http:request">
      <munit-tools:with-attributes >
        <munit-tools:with-attribute attributeName="path" whereValue="#['/my/api']" />
      </munit-tools:with-attributes>

      <munit-tools:before-call >
        <munit-tools:assert-that expression="#[payload]" is="#[MunitTools::nullValue()]"/>
      </munit-tools:before-call>

      <munit-tools:after-call >
        <munit-tools:assert-that expression="#[payload]" is="#[MunitTools::notNullValue()]"/>
      </munit-tools:after-call>

    </munit-tools:spy>

  </munit:behavior>

</munit:test>

上記のように、このプロセッサーでは、監視するプロセッサーをコールする前後でアクションを定義できます。 ただし、Spy プロセッサーで元の Mule イベントを変更することはできません。
Spy の内部で変数や属性を設定したり、ペイロードを変更したりしても、その変更はプロセッサーの外部では存続しません。
一般に Spy プロセッサーは検証または確認のために使用する必要があります。