0

我必须在 MUnit 测试用例中使用 Mule Requester 来读取 src/test/resources 下的文件,以便我可以断言有效负载。在当前的实现中,我在 MUnits xml 中有 Ftp 连接器,我指的是 mule requester 。我清楚地看到,骡子请求者甚至在它初始化之前就试图访问它。有什么办法可以告诉 mule 尽早初始化 ftp 连接器?

例外 :

    ********************************************************************************
 Message               : Cannot perform an action on a connector when it is not started. Connector "no-delete-file-connector-test" is currently in lifecycle phase "initialise"
 Element               : /no-delete-file-connector-test @ app:haz001-test-suite.xml:33 (File)
 --------------------------------------------------------------------------------
 Exception stack is:
 Cannot perform an action on a connector when it is not started. Connector "no-delete-file-connector-test" is currently in lifecycle phase "initialise" (org.mule.api.lifecycle.LifecycleException)
   org.mule.transport.AbstractConnector.getRequester(AbstractConnector.java:1178)
   org.mule.transport.AbstractConnector.request(AbstractConnector.java:2269)
   org.mule.transport.file.FileConnector$$EnhancerByCGLIB$$d6c65eff.CGLIB$request$75(<generated>:-1)
   (97 more...)

   (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
 ********************************************************************************

以下是我的配置:

<flow-ref name="processMainFlow" doc:name="processMainFlow" />
  <mulerequester:request resource="file://src/test/resources/expected-discrete.csv?connector=no-delete-file-connector-test" doc:name="Mule Requester" returnClass="java.lang.String"/>
<munit:assert-payload-equals expectedValue="#[flowVars.outputCSV]" doc:name="Assert Payload"/>
 <logger message="response for test #[payload] actual data : #[flowVars.outputCSV]" level="INFO"
     doc:name="Logger" />
4

2 回答 2

0

要在 Munit 测试中加载文件,您不需要文件连接器,使用 Set Payload 或 Set Message,例如:

<set-payload value="#[getResource('expected-discrete.csv').asStream()]" doc:name="Set Payload"/>

getResource 中的路径与您的 pom 文件中指定的 testResources 相关(默认为 src/test/munit 和 src/test/resources)。

文件连接器已停止,因为这是 Munit 测试中连接器的默认行为。在 Mulesoft 论坛中有更多信息:https ://forums.mulesoft.com/questions/44649/munit-config-mock-inbounds-mock-connectors.html

于 2017-11-20T05:50:32.400 回答
0

尝试模拟组件而不是调用它。如果模拟它可以避免这个错误,因为 FTP 需要启动,这在 munit 中是不可能的。

于 2017-11-20T10:08:33.260 回答