M Unit in Mule | Unit Testing in Mule
MUnit is a Mule application testing framework that allows you to easily build automated tests for your integrations and APIs.
jar required for m unit testing in mule :
munit-common-3.6.0-RC1.jar
Here is a simple flow of json to xml transformation via transform message having two attributes id and name.
Project structure :
inputfile.json is for input metadata & outputfile.xml is for output metadata for transform message component.
inputfile.json :
{"array":{
"id" : 3,
"name" : "Akash"
}
}
outputfile.xml :
<?xml version='1.0' encoding='UTF-8'?>
<array>
<id xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</array>
transform message configuration :
for generation of M Unit test cases :
first add the jar to classpath or add maven dependency : munit-common-3.6.0-RC1.jar
right click on project flow and go to Munit and create new project suite.
munit test suite.xml will get generated in src/test/munit
Add set payload component and set desired payload in it. Add Assert payload component and configure it to #[payload].Flow reference component is pointing to your main flow.
Right click and select Run Munit suite.
If unit test get passed then green bar appears as shown below and if test fails then red bar appears.
There is a coverage option you can see below green bar in above snapshot by clicking on that you can generate report to find actual code coverage done by M Unit test.In our example it is 100% as shown below :
XML project code :
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8085" basePath="/api" doc:name="HTTP Listener Configuration"/>
<flow name="test_munitFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/munit" doc:name="HTTP"/>
<dw:transform-message doc:name="Transform Message" metadata:id="100d380b-cd4d-4c63-8a6f-7612ca0b0afd">
<dw:input-payload mimeType="application/json"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/xml
---
{
info: {
id: payload.info.id as :string,
name: payload.info.name
}
}]]></dw:set-payload>
</dw:transform-message>
<set-payload value="#[payload]" doc:name="Set Payload"/>
</flow>
</mule>
No comments:
Post a Comment