- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 Mule 流,它被构建为从外部 API 检索一些细节,然后将其映射到一些有效负载以返回到调用客户端:
<flow name="get:/clients/{clientId}:api-config">
<http:request config-ref="HTTPS_Request_Configuration" path="/api/clients/{clientId}" method="GET" host="host.com" port="443" doc:name="Find Client by ID">
<http:request-builder>
<http:uri-param paramName="clientId" value="#[flowVars['clientId']]"/>
</http:request-builder>
<http:success-status-code-validator values="0..599"/>
</http:request>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
...
我创建了以下单元测试,其中我使用 MUnit mock
处理器模拟 HTTP 请求:
<munit:test name="get:/clients/{clientId}:api-config-200-application/json-FlowTest" description="Verifying functionality of [get:/clients/{clientId}:api-config-200-application/json]">
<mock:when messageProcessor=".*:.*" doc:name="Mock">
<mock:with-attributes>
<mock:with-attribute name="doc:name" whereValue="#['Find Client by ID']"/>
</mock:with-attributes>
<mock:then-return payload="#[getResource('sample-client.json').asStream()]" mimeType="application/json"/>
</mock:when>
<set-variable variableName="clientId" value="#['null']" doc:name="clientId"/>
<http:request config-ref="HTTP_Request_Configuration" path="/clients/#[flowVars['clientId']]" method="GET" doc:name="HTTP"/>
<object-to-string-transformer doc:name="http response to string"/>
<munit:assert-true message="The HTTP Status code is not correct!" condition="#[messageInboundProperty('http.status').is(eq(200))]" doc:name="assert that - http.status eq 200"/>
<munit:assert-on-equals message="The response payload is not correct!" expectedValue="..."/>
当我尝试运行此测试时遇到异常错误。似乎测试由于 HTTP 超时而失败。我不明白当 HTTP 请求处理器被模拟时这怎么可能,因此不应进行外部调用?
我看到的错误信息如下:
ERROR 2016-02-19 12:25:59,359 [main] org.mule.exception.DefaultMessagingExceptionStrategy:
********************************************************************************
Message : Error sending HTTP request. Message payload is of type: String
Code : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. Timeout exceeded (java.util.concurrent.TimeoutException)
com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProvider:426 (null)
2. Error sending HTTP request. Message payload is of type: String (org.mule.api.MessagingException)
org.mule.module.http.internal.request.DefaultHttpRequester:287 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.util.concurrent.TimeoutException: Timeout exceeded
at com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProvider.timeout(GrizzlyAsyncHttpProvider.java:426)
at com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProvider$3.onTimeout(GrizzlyAsyncHttpProvider.java:274)
at org.glassfish.grizzly.utils.IdleTimeoutFilter$DefaultWorker.doWork(IdleTimeoutFilter.java:398)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
最佳答案
在你的测试中,你为什么要调用http:endpoint
这里<http:request config-ref="HTTP_Request_Configuration" path="/clients/#[flowVars['clientId']]" method="GET" doc:name="HTTP"/>
此外,我没有看到 <flow-ref...>
调用以调用您正在测试的实际流程。
编辑:
基本测试结构可能遵循以下框架:
<munit:config name="munit" doc:name="MUnit configuration"/>
<spring:beans>
<spring:import resource="classpath:munit-test.xml"/>
</spring:beans>
<munit:test name="new-test-suite-get:/clients/{clientId}:api-configTest" description="Test">
<mock:when messageProcessor=".*:.*" doc:name="Mock">
<mock:with-attributes>
<mock:with-attribute name="doc:name"
whereValue="#['Find Client by ID']" />
</mock:with-attributes>
<mock:then-return payload="#[getResource('sample-client.json').asStream()]"
mimeType="application/json" />
</mock:when>
<set-variable variableName="clientId" value="#['null']"
doc:name="clientId" />
<!-- Below will make an actual call to the flow -->
<flow-ref name="get:/clients/{clientId}:api-config" doc:name="Flow-ref to get:/clients/{clientId}:api-config"/>
</munit:test>
关于unit-testing - 模拟外部 REST API 调用时 MUnit 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35505677/
我已经开始从 Mule 3.9 迁移到 4.1,这意味着迁移到 Anypoint Studio 7 和 MUnit 2.1 以前,在 MUnit 1.3 中,通过扩展 FunctionalMunitS
我的 Mule 项目中有示例 Munit 测试用例。但是文件总是在处显示错误标记标记在配置文件的开头。 注:但目前我能够执行我的 munit 测试用例。 错误是: cvc-complex-type.2
我有一个自定义代理,我正在尝试通过创建一个简单的流程并调用该代理来测试自定义代理的代码,但出于某种原因,Munit 在运行我的流程时似乎没有调用自定义代理。这是自定义代理 xml:
有没有办法让我使用 MUnit 结束测试并在调用子流程时添加断言?我想将测试分成更小的部分。 最佳答案 您将不得不模拟子流程的结果。 为此,您必须使用 MUnit 中的 Mock 组件。 它的作用是,
我正在尝试编写一个 mule munit 测试(在 java 中)并且我想检查消息是否通过(或在这种情况下退出)特定的出站端点,因为流中存在路由并且消息可以根据条件通过不同的? 我的设置是实际使用 2
我正在编写一个负面测试用例,其中我必须在流程中创建异常。我希望全局异常策略能够捕获它,以便我可以断言响应。在 GlobalExceptionStrategy 内部,我们根据异常错误代码设置一些错误代码
有没有办法断言流引用在 Mulesoft 中引发了异常?搜索谷歌和文档没有发现任何东西。 基本上,我正在测试一个子流,如果某个项目存在,则会引发 NotFound 异常,但 MUnit 在收到错误时会
我正在尝试使用位于此处的 MUnit FTP 服务器:https://docs.mulesoft.com/mule-user-guide/v/3.7/munit-ftp-server 几个示例引用了
我的流程中有一些占位符。这些占位符的值在属性文件(在类路径中)中指定。我正在使用java做munit。目前,这些占位符不会被属性文件中的值替换。知道如何在运行 munit 时加载此文件吗? 我的装备是
我有一个流程,我正在尝试使用 Munit 在 Mule 中测试基本的 HTTP 流程,该流程看起来像这样: .... 对于 Munit,我使用以下方式调用流程
我正在尝试使用 Bamboo 为我的 Mulesoft 代码放置一个 CI 管道。我的 bamboo 作业中有结帐、构建、测试和部署步骤。该作业正在成功测试并在/target/munit 中创建测试覆
我正忙于为子流程编写 MUnit 测试用例。我模拟了一个组件来防止发送电子邮件,但主要是为了确认我的流程正在将正确的属性传递给该 SMTP 组件。 我可以使用 validator 来确认调用是否与预期
我已经为通过 APIKit 路由器生成的流创建了 Munit 测试用例。但是在运行测试套件时,我遇到了以下异常: Exception in thread "main" java.lang.Runtim
我正在编写一个 MUnit 测试,并想模拟我测试中使用的一些 bean,但我不知道如何将它们注入(inject)到流程中。这在 MUnit 中可能吗? 最佳答案 我知道您的应用程序中有一个 bean,
我在一个共享通用设置(和拆卸)过程的单个 .mt 文件中编写了许多测试用例。我希望看到类似 JUnit 的 @Before/@After ,但是 MUnit 包中的任何内容都没有让我跳出来,这可以实现
我有以下 Mule 流,它被构建为从外部 API 检索一些细节,然后将其映射到一些有效负载以返回到调用客户端: ... 我创建了以下单元测试,其
我正在尝试运行 MUnit 测试,每次尝试运行它时,我都会在控制台中收到此错误: 无法识别的选项:-esb错误:无法创建 Java 虚拟机。错误:发生致命异常。程序将退出。 我尝试访问 ini 文件,
我正在尝试在 MUnit 中测试 APIKit。最初我在 MUnit 中使用 http 请求来调用我的流,然后 APIKit 会将请求路由到我的逻辑所在的正确子流。现在我想模拟子流的元素之一,所以我试
我们在旧版本的 MUnit 中使用类 org.mule.munit.MunitPollManager(在 munit-utils 包中)来确保我们的轮询器在流开始时没有启动,但是当 Munit 迁移时
尝试编译自动生成的示例测试(使用标准 haxelib run munit gen 制作,然后使用 haxelib run munit t 运行,带或不带 -coverage)用于 HaxeFlixel
我是一名优秀的程序员,十分优秀!