Так что я предполагаю, что тесты не пройдены, потому что предыдущее значение кэшировано.Это может быть связано со стратегией кэширования и, возможно, использованием разных данных для каждого теста, поэтому кэш всегда пропадает.
Но если вам нужно использовать похожие данные, вы можете очистить кеш перед каждым тестом.Например:
С учетом этого потока настройте хранилище именованных объектов и стратегию кэширования, использующую указанное хранилище объектов:
<os:object-store name="myObjectStore" doc:name="Object store"
doc:id="25cec35b-2680-4754-8073-633f3e60a34f" />
<ee:object-store-caching-strategy
name="Caching_Strategy" objectStore="myObjectStore" doc:name="Caching Strategy"
doc:id="fd059f4f-d3be-4971-a36c-374506e2db49" />
<flow name="httpCache">
<ee:cache cachingStrategy-ref="Caching_Strategy" doc:name="Cache" doc:id="0dcabdb4-d6fc-41d5-aebd-77d015e02dd7" >
<http:request method="GET" doc:name="Request" doc:id="366184e9-6c0b-41d4-8414-3dfdd047ecb2" url="http://google.com"/>
<logger level="ERROR" message="CACHE MISS" />
</ee:cache>
<logger level="ERROR" message="After cache: #[payload]" />
</flow>
Затем выполните ваши тесты, настройте действие перед очисткой этого хранилища:
<munit:before-test name="clearOS" description="clears OS">
<os:clear objectStore="myObjectStore" doc:id="cd931ce7-6945-4dc9-919a-3ff9b158d746" />
</munit:before-test>
<munit:test name="new-test-suite-httpCacheTest" description="Test" doc:id="b8e299ea-d191-4c0a-ac71-27a12b28d275" >
<munit:behavior >
<munit-tools:mock-when doc:name="Mock when" doc:id="8bf1468d-c9c1-48a1-9009-bae02bf8e788" processor="http:request">
<munit-tools:with-attributes >
<munit-tools:with-attribute attributeName="doc:name" whereValue="Request" />
</munit-tools:with-attributes>
<munit-tools:then-return >
<munit-tools:payload value="#['mockPayload']"/>
</munit-tools:then-return>
</munit-tools:mock-when>
</munit:behavior>
<munit:execution >
<flow-ref doc:name="Flow-ref to httpCache" doc:id="2dd44c7b-f250-4852-9e53-f4eee3b5ad84" name="httpCache"/>
</munit:execution>
<munit:validation >
<munit-tools:assert-that doc:name="Assert that" doc:id="6521459d-04dd-4e59-8a2e-16a27f51c091" expression="#[payload]" is="#[MunitTools::notNullValue()]"/>
</munit:validation>
</munit:test>
<munit:test name="new-test-suite-httpCacheTest2" description="Test" doc:id="d6ea0d83-f943-450e-948c-26596bf41207" >
<munit:behavior >
<munit-tools:mock-when doc:name="Mock when" doc:id="8688876f-144e-4f7f-8ef0-98a8e6caeca0" processor="http:request">
<munit-tools:with-attributes >
<munit-tools:with-attribute attributeName="doc:name" whereValue="Request" />
</munit-tools:with-attributes>
<munit-tools:then-return >
<munit-tools:payload value="#['mockPayload2']"/>
</munit-tools:then-return>
</munit-tools:mock-when>
</munit:behavior>
<munit:execution >
<flow-ref doc:name="Flow-ref to httpCache" doc:id="b4a1d37a-f0e4-4fa1-9c78-084ed3f6faf8" name="httpCache"/>
</munit:execution>
<munit:validation >
<munit-tools:assert-that doc:name="Assert that" doc:id="46febad5-d557-4152-829e-db61aa6ef409" expression="#[payload]" is="#[MunitTools::notNullValue()]"/>
</munit:validation>
</munit:test>
Оба из них будут регистрировать:
LoggerMessageProcessor: CACHE MISS
И затем:
LoggerMessageProcessor: After cache: mockPayload
LoggerMessageProcessor: After cache: mockPayload2
Где, как без os: clear, он пропустит только кешв первый раз и распечатайте ту же полезную нагрузку из кэша:
LoggerMessageProcessor: CACHE MISS
LoggerMessageProcessor: After cache: mockPayload
LoggerMessageProcessor: After cache: mockPayload
Или, в качестве альтернативы, вы можете переместить кеш и http-процессоры в их собственный поток и вместо этого смоделировать поток, чтобы кеш никогда не использовался в ваших тестах..