问题标签 [wiremock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
207 浏览

hystrix - Wiremock Hystrix 升级失败

我们有一些使用wiremock的测试,使用规则:

这是一个旧应用程序,使用了 1.7 版的wiremock。现在我们将它升级到 2.4.1,一些测试失败了。实际的 Http Query 是通过 Hystrix 完成的,这可能是个问题。

0 投票
1 回答
25340 浏览

json - WireMock 中的请求正文匹配(不是 JSON/XML)

我正在尝试使用独立的wiremock 创建一个 API 模拟。响应正文取决于请求正文中的属性。

使用 JSON,我能够做到。这是示例映射:

但是,我的主要要求是处理 google protobuf,并且我正在尝试使用文本格式来代替嘲笑者将用来模拟 API 以进行响应的文本格式。因此,请求文件是文本格式,并且没有任何 JSON 验证,如双引号或每行末尾的逗号等。

我发现使用 JSON 路径,由于格式不正确,wiremock 无法匹配请求正文。例如,这样的请求:

代替

可以说key1=value1应该匹配并且response1.json应该返回,或者当key1=someOtherValueresponse2.json应该返回。是的,key 是 type 的一部分,type 是 animal 的一部分。如何实现此请求正文匹配?

0 投票
1 回答
1658 浏览

java - WireMock 可以回放来自多个域的请求吗?

我正在构建一个 Dockerised 记录播放系统来帮助我记录网站,所以我可以设计一个本地版本而不是真实版本的爬虫。这意味着我不会用自动请求淹没网站,并且具有额外的优势,即我不需要连接到网络即可工作。

我在内部使用了基于 Java 的 WireMock,它使用 Wget 从站点抓取队列中记录。我正在使用WireMock API从它记录的映射中读取各种信息。

但是,我从映射响应中发现域信息似乎没有被记录(除非它在响应标头中意外出现)。请参阅以下回复__admin/mappings

URL 唯一清晰的记录是在最后的条目中proxyBaseUrl,并且鉴于我必须在控制台调用中指定一个 URL,我现在担心如果我针对不同的域进行记录,每个来自的域都会丢失.

这意味着在播放模式下,WireMock 只能从一个域播放,我必须重新启动它并将其指向另一个缓存才能播放不同的站点。这不适用于我的用例,那么有没有办法解决这个问题?

(我已经使用Mountebank做了一些工作,并且愿意切换到它,尽管我发现 WireMock 通常更易于使用。我对 Mountebank 的有限理解是它遭受相同的单域问题,尽管我很高兴对此进行更正。如果放弃 WireMock 是唯一的前进方式,我很乐意换成任何强大的开源 API 驱动的记录器 HTTP 代理)。

0 投票
1 回答
586 浏览

java - 在wiremock中检查大于或小于

我有一种情况,我需要检查金额并相应地返回响应。

如果金额 >=100,则响应会有所不同,否则对于金额 < 100,我需要发送错误响应。

请参考请求正文中的示例 json。

{ "accountName":"ABCZYZ", "specialCode":"MYCODE", "amount":"100", "currencyType":"MYCURRENCY" }

下面是我的wiremock映射文件

{ "request": { "urlPattern": "/some/url", "method": "POST", "bodyPatterns" : [ { "matchesJsonPath" : " $[?(@.amount < 100)] " } ] },

“响应”:{“状态”:200,“正文”:“MY_REPONSE_IN_JSON_FORMAT”}}

我在重新定义上述匹配模式时遇到问题。

任何人都可以帮助我吗?

谢谢米

0 投票
1 回答
1580 浏览

wiremock - 使用 Spring Cloud Contract Groovy DSL,我如何参数化响应以包含请求中的值?

我正在使用 Spring Cloud Contract 为 REST 服务创建存根,以便可以使用 REST 客户端进行测试。我让存根运行器在 Spring Boot 应用程序中工作,并且一切都按预期工作。我遇到的问题是我想在响应中看到请求的元素,以更好地模拟 REST 服务的最终行为。例如,在这个合同中,我希望请求中“代码”字段中传递的内容在响应中出现反刍:

显然,输入“代码”可以是任何与正则表达式匹配的内容,因此实际值在运行之前是未知的。有什么可以代替“???” 返回请求中提交的代码?我尝试访问,例如:

但是该值似乎是在编译时生成的,也许是为了在生成的测试源下的 ContractVerifierTest.java 中启用测试的自动生成。

这可以做到吗?这是对 Spring Cloud Contract 的适当使用吗?

0 投票
2 回答
513 浏览

java - 在用于线模的 Junit 测试类中正确放置存根

我从这里找到了下面的代码。所有存根都是在@Before部分中创建的。

那是正确的做法吗。如果我们在方法本身中创建存根会不会更好@Test(这样与该测试相关的存根可以很容易地识别)。

0 投票
0 回答
229 浏览

groovy - Groovy 使用旧的 servlet API 污染类路径

我正在编写一个 Groovy 脚本来在我们的 CI 过程中启动 WireMock 服务器:

我有一个简单的映射:

我可以在该部分中看到该映射/__admin

但是当我点击那个 URL 时,我得到:

武特?

看起来类路径上的 Servlet API 版本是 2.4!但它来自哪里?来自 Groovy 的安装:${GROOVY_HOME}/lib/servlet-api-2.4.jar

我已经从 Groovy's 中删除了该 JAR lib,WireMock 以所需的响应响应了我。

我该如何解决?显然,我无法修改 CI 服务器上的 Groovy 安装。我应该自己写groovy-starter.conf吗?我不喜欢这个主意。

0 投票
1 回答
3090 浏览

java - 如何在 WireMock 中成功获取 HTTPS 端点代理?

我正在编写一个内部使用 WireMock 的 HTTP 记录播放代理,并且在记录 HTTPS 目标时遇到问题。HTTP 站点工作正常。

以下是我为未加密站点设置 WireMock 代理的方法:

然后,我可以使用以下命令在该站点上记录任何内容:

很快,我将获得一些自动创建的映射:

这是相同的事情,但在 SSL 站点上。代理优先:

这是获取:

WireMock 的结果是创建了内部缓存目录,但它们不包含任何内容:

我在 Docker 容器中的 Alpine 3.4 上使用 WM 2.4.1。我是否需要使用某些https特定的命令行开关才能使其正常工作?

更新

看到最近的2.5.0版本最近合并了,我暂时感到欣慰https-bind-address-bug,这听起来非常相关。我已经尝试过这个版本,但不幸的是它没有任何区别。

0 投票
1 回答
1120 浏览

java - 运行多个使用wiremock存根的测试用例时“选择器循环等待选择”

我正在使用wiremock来模拟Web 服务。我正在使用它来提供对我们正在测试的某些单元的服务访问。所以基本上我们有多个使用来自wiremock的存根的junit测试。

但是当我们一次运行多个测试时(比如说运行一个完整的 test.java 文件),它会在完成一些测试用例后继续等待。日志底部会显示如下内容,

Junit 版本:4.12
Wiremock 版本:2.5.0 (wiremock-standalone)
Java 版本:1.8.0_77

我也检查了这个 SO 问题。但仍然无法弄清楚如何克服这一点。

0 投票
3 回答
8922 浏览

spring-boot - ClassNotFoundException 与 Wiremock 2.5.1 和 Spring Boot 1.5.1

我在尝试在 Spring Boot 1.5.1.RELEASE 和 Wiremock 2.5.1 中配置测试基础架构时遇到问题。它在抛出:

我在另一个项目中使用过 Wiremock 2.4.1 和 Spring Boot 1.3.0.M5,从来没有遇到过这个问题。

我的测试课:

我注意到自 Spring Boot 1.3.0.M5 版本以来,一些测试注释发生了变化,我认为这可能是问题所在。有没有人有同样的问题?

谢谢,