文章目录
- 前言
- MUnit
- Mock when
- Assert That
前言
这个简单的案例已经基本开发完成,在开发完成后,开发人员要进行UT测试。在Mule APP中UT测试需要使用到官方提供的MUnit组件。本片教程将介绍如何使用MUnit对Mule APP进行测试。
MUnit
- 返回employeeapi.xml,右键点击APIkit Router选择Create Test…
- 在src/test/munit自动生成了employeeapi-apikit-test.xml文件,在右边的Mule Palette多出了MUnit和MUnit Tools两个工具栏。在Message Flow中生成的两个Test框就是MUnit测试所要用到的组件。这两个Test组件对应的是employeeapi.xml中的get:\ …和post:\ …
名称 | 作用 |
---|---|
Behavior | 行为窗口主要用来进行Mock |
Execution | 执行窗口主要用来发送请求和写入值 |
Validaton | 验证窗口检查返回结果和期望值 |
- 更改测试名为有实际意义的名称
Mock when
Mock when用来模拟一个请求的返回值。
-
选择MUnit Tools中的Mock when,放到employee_api_test_正常系_get测试中
-
选中Mock when,点击Pick processor。在弹出窗中选择employeeapi-sub,选择employeeapi-get_Flow,选择Request。在右边窗口选择doc:id绑定组件。点击OK
-
在Value中输入#[],要模拟的值可以放入#[]中,在Media Type中选择application/java,Encoding中选择UTF-8
-
输入要Mock的值
#[[{
"eName": "zhangsan","eAge": "20","eSex": "man","cGroup": "afl","cTeam": "mulesoft","id": "12345678","state": "liaoning","email": "san.b.zhang@acc.com","city": "dalian","phone": "12345678901"}]
]
Assert That
- Assert That组件是用来检测期望值的。Assert That Status Code is 200检查的是HTTP状态码,attributes.statusCode用来取出状态码。MunitTools::equalTo(200)的意思是将取出的状态码和期望值(200)进行对比。
- Assert That - Payload is Expected用来检查返回值。output application/java —write(payload, ‘application/json’) as String将Payload转换为字符串形式。MunitTools::getResourceAsString(‘scaffolder/response/get_200_getempinf_application_json.json’)取scaffolder/response/get_200_getempinf_application_json.json(自动生成)中的值。MunitTools::equalTo()进行对比。
- get_200_getempinf_application_json.json中的值现在为空({})
- 右键点击刚才完成的Test选择Run MUnit suite进行测试
- 测试期望值与实际值不同,还记得吗我们之前取的文件中的值是{}空。但实际的返回值是:
[{
"number": "12345678","name": "zhangsan","age": "20","sex": "man","group": "afl","team": "mulesoft","contact": {
"Email": "san.b.zhang@acc.com","phone": "12345678901"},"address": {
"state": "liaoning","city": "dalian"}}
]
在确定了实际返回值时,这个返回值是我们想要的,我们可以反向制作期望值。查看but中的值,这是我们返回值的字符串形式。将除了转译字符\n之外的其他\删除后,放到MunitTools::equalTo(’’)中(这是目前的办法,之后有其他办法可以尝试)。
- 运行Test,成功