问题标签 [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.
hystrix - Wiremock Hystrix 升级失败
我们有一些使用wiremock的测试,使用规则:
这是一个旧应用程序,使用了 1.7 版的wiremock。现在我们将它升级到 2.4.1,一些测试失败了。实际的 Http Query 是通过 Hystrix 完成的,这可能是个问题。
json - WireMock 中的请求正文匹配(不是 JSON/XML)
我正在尝试使用独立的wiremock 创建一个 API 模拟。响应正文取决于请求正文中的属性。
使用 JSON,我能够做到。这是示例映射:
但是,我的主要要求是处理 google protobuf,并且我正在尝试使用文本格式来代替嘲笑者将用来模拟 API 以进行响应的文本格式。因此,请求文件是文本格式,并且没有任何 JSON 验证,如双引号或每行末尾的逗号等。
我发现使用 JSON 路径,由于格式不正确,wiremock 无法匹配请求正文。例如,这样的请求:
代替
可以说key1
=value1
应该匹配并且response1.json
应该返回,或者当key1
=someOtherValue
时response2.json
应该返回。是的,key 是 type 的一部分,type 是 animal 的一部分。如何实现此请求正文匹配?
java - WireMock 可以回放来自多个域的请求吗?
我正在构建一个 Dockerised 记录播放系统来帮助我记录网站,所以我可以设计一个本地版本而不是真实版本的爬虫。这意味着我不会用自动请求淹没网站,并且具有额外的优势,即我不需要连接到网络即可工作。
我在内部使用了基于 Java 的 WireMock,它使用 Wget 从站点抓取队列中记录。我正在使用WireMock API从它记录的映射中读取各种信息。
但是,我从映射响应中发现域信息似乎没有被记录(除非它在响应标头中意外出现)。请参阅以下回复__admin/mappings
:
URL 唯一清晰的记录是在最后的条目中proxyBaseUrl
,并且鉴于我必须在控制台调用中指定一个 URL,我现在担心如果我针对不同的域进行记录,每个来自的域都会丢失.
这意味着在播放模式下,WireMock 只能从一个域播放,我必须重新启动它并将其指向另一个缓存才能播放不同的站点。这不适用于我的用例,那么有没有办法解决这个问题?
(我已经使用Mountebank做了一些工作,并且愿意切换到它,尽管我发现 WireMock 通常更易于使用。我对 Mountebank 的有限理解是它遭受相同的单域问题,尽管我很高兴对此进行更正。如果放弃 WireMock 是唯一的前进方式,我很乐意换成任何强大的开源 API 驱动的记录器 HTTP 代理)。
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”}}
我在重新定义上述匹配模式时遇到问题。
任何人都可以帮助我吗?
谢谢米
wiremock - 使用 Spring Cloud Contract Groovy DSL,我如何参数化响应以包含请求中的值?
我正在使用 Spring Cloud Contract 为 REST 服务创建存根,以便可以使用 REST 客户端进行测试。我让存根运行器在 Spring Boot 应用程序中工作,并且一切都按预期工作。我遇到的问题是我想在响应中看到请求的元素,以更好地模拟 REST 服务的最终行为。例如,在这个合同中,我希望请求中“代码”字段中传递的内容在响应中出现反刍:
显然,输入“代码”可以是任何与正则表达式匹配的内容,因此实际值在运行之前是未知的。有什么可以代替“???” 返回请求中提交的代码?我尝试访问,例如:
但是该值似乎是在编译时生成的,也许是为了在生成的测试源下的 ContractVerifierTest.java 中启用测试的自动生成。
这可以做到吗?这是对 Spring Cloud Contract 的适当使用吗?
java - 在用于线模的 Junit 测试类中正确放置存根
我从这里找到了下面的代码。所有存根都是在@Before
部分中创建的。
那是正确的做法吗。如果我们在方法本身中创建存根会不会更好@Test
(这样与该测试相关的存根可以很容易地识别)。
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
吗?我不喜欢这个主意。
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
,这听起来非常相关。我已经尝试过这个版本,但不幸的是它没有任何区别。
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 版本以来,一些测试注释发生了变化,我认为这可能是问题所在。有没有人有同样的问题?
谢谢,