我必须使用Mule Requester Inside MUnit测试用例来读取src / test / resources下的文件,以便我可以断言有效负载。在当前实现中,我在MUnits xml中有Ftp连接器,我是从mule请求者引用的。我清楚地看到骡子请求者甚至在它初始化之前就试图访问连接器。有什么方法可以告诉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" />
答案 0 :(得分: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
答案 1 :(得分:0)
尝试模拟组件而不是调用它。如果被模拟它可以避免这个错误,因为FTP需要启动,这在munit中是不可能的。