问题标签 [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.
java - 使用生成的文件进行 Java WireMock 自动化测试
我只是运行独立版本的 WireMock 来捕获我的请求和来自 Java EE 中的多模块项目的相应响应。现在我在文件夹__files
和mappings
. 我有很多带有很多请求的测试,所以我想加载相关的映射和响应。这是怎么做到的?我只找到了这样的答案:
我只是不想手动更改每个字段。谢谢。
android - WireMock 代理不返回任何正文
我的应用程序确实向 url 发布请求:
OkHttp 客户端拦截器显示我的标头:
11-17 10:10:56.780 3140-3304/com.myapp.debug D/OkHttp: Content-Type: application/x-www-form-urlencoded
11-17 10:10:56.780 3140-3304/com.myapp.debug D/OkHttp:内容长度:187
11-17 10:10:56.781 3140-3304/com.myapp.debug D/OkHttp:授权:基本授权keyfortest5430593045903495034905==
11-17 10:10:56.781 3140-3304/com.myapp.debug D/OkHttp: email=testlogin%40gmail.com&password=test%4012&deviceId=1484564155&deviceLabel=Android%20SDK%20built%20for%20x86_64&deviceType=ANDROID&deviceVersion=23%20 %28REL%29
我已经创建了独立的 WireMock 服务器,我想将每个 POST 请求从我的 APP 重定向到我的 WireMock 服务器。这就是我在请求定义中添加 *.JSON 的原因:
我期望会发生什么:
当我将 Http 客户端的基本路径从更改https://myserver.domain.com/
为http://myserveraddress.com/
- 时,来自我的应用程序的每个请求都应该转到我的 MockServer。并且根据上面的 JSON 的 MockServer 应该代理/转发该请求https://myserver.domain.com/
并返回相同的响应 - 所以一切都应该正常工作。
怎么了:
每个 POST 请求都返回状态 200 但正文为空。(它应该返回经过身份验证的用户对象)
问:有可能实现吗?难道我做错了什么?
java - 使用wiremock进行Rest API模拟:java
这是我模拟服务的实用程序类
正如您所看到的,我正在模拟一个 GET 调用/orders
(包含所有订单)并使用正文响应并将所有订单保存在一个 json 文件中。
我还通过 GET 调用调用单个订单/orders/1
。我正在使用文件中的 JSON 对象对其进行响应。但我希望它是动态的。就像当我点击它时一样orders/30
,我应该动态地获取订单id=30
并渲染它。
java - WireMock 可以同时播放和录音吗?
我有一个连接到外部第三方 API 的应用程序,最近 API 的测试实例并不是特别可靠。这会停止开发进度并将我们的构建管道变为红色,因此我想添加一个 HTTP 记录代理来阻止这种情况发生。
我推荐过WireMock,并尝试过它的录制和播放功能,它看起来确实非常好——它几乎是开箱即用的。我们只是简单地更改外部服务的配置 URL,然后像这样记录:
这会在当前工作目录中创建缓存文件夹,然后可以通过杀死记录器并切换到播放来切换到播放模式:
但是,要在实践中使用它,我需要设置一个运行测试回归包的应用程序实例,以记录大量 API 使用情况,并开始每天使用一次。然后我需要停止记录器并将缓存文件复制到播放过程中,然后重新启动播放过程。
这可能会起作用,但感觉就像很多活动部件,理想情况下我想同时运行播放和录制。如果需要新的 API 调用(由于自然项目更改),这将允许自动刷新缓存,但默认情况下会在找到匹配项时播放。
这可能吗?我不是 Java 程序员,但假设如果要编写一个 WireMock 插件,它可能是可用的。如果这可以在控制台上完成,那就太好了,但是手册的措辞表明,维护者认为播放和记录是分开的。
我确实想知道我是否可以切换到Mountebank,看起来它可能支持这一点,但事实证明,播放和录制在这里也是独立的模式。无论如何,我喜欢 WireMock 上手的容易程度,所以如果可能的话,我想坚持下去。
java - Spawning process in background on Jenkins - job that won't stay in queue
I want to make job on Jenkins that starts server (MockServer on WireMock).
Server is launched from *.jar file, from terminal like that.
It takes over my console. To avoid that I modify this and do:
And that works for me on my local PC. Now I want to move it to Jenkins.
If I try to do this from "Shell command" block in Jenkins Job then:
a) java -jar serverLaunch.jar
- I have task locked in queue in my Jenkins and I don't want that but server starts and works.
b) java -jar serverLaunch.jar &>/dev/null &
- Job ends with success but my server is not alive.
I have wrapped this command also in .sh script and .rb script. Any idea how to make it work?
I've tried this: https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build
And then in Jenkins "Shell script":
But it also passes but server is not alive.
java - RestTemplate 是否隐式使用代理?我怎么知道?
我正在使用 Wiremock 测试 Java REST 客户端,特别是它如何处理空响应。
被测代码:
测试:
这个测试在我的本地机器上通过了,但是在我们的构建机器上它失败了,抛出一个BadStatusException
状态码 500。
我最好的猜测是,在我的本地机器上,RestTemplate 直接连接到 Wiremock 服务器,但是在构建机器上,连接是通过代理进行的——可能是因为环境变量等——并且代理遇到 WireMock 模拟的故障时返回 500 错误。
强制我RestTemplate
使用 Apache HttpClient,如下所示:
...似乎解决了这个问题,但我真的不想在这个库中引入额外的依赖项(这个库的使用者将注入他们自己的 RestTemplate,按照他们喜欢的方式进行配置)。
我的理论可信吗?我如何验证这是正在发生的事情?如何强制 RestTemplate 直接连接?还能有什么其他解释?
wiremock - 如何使用wiremock模拟不可到达的端点?
我想模拟端点,例如。/notReachable
那将无法连接。
如何实现这样的嘲讽?
uri - Wiremock 中的多值查询字符串
在旧版本的 Wiremock 中,我们可以将 te queryString 附加到匹配的 url,如下所示:
但是现在我们升级到最新版本,我们必须使用映射构建器的 withQueryParam 方法——wiremock 不再理解附加的参数。但是我们如何实现这样的行为呢?我不知道如何在存根中注入多值参数。
当我们从 restTemplate 调用路径为“/rest/customer/find?custId=1&custId=2”的 url 时,这不起作用。
java - 我可以在录制时为 WireMock 指定 --proxy-all 参数以匹配任何网站吗?
我正在构建一个代理服务来使用 WireMock 记录和播放来自网络的响应。我最近发现这两种模式是分开的,所以我尝试构建一小组 Docker 容器来并行运行这些服务。
简而言之,我的计划是设置一个 WireMock 进行录制,然后再使用另一个实例(在不同的端口上)进行播放。我将定期在 cron 上将映射从一个复制到另一个,然后将重置 API 调用发送到播放实例以重新加载新定义。
所以,我目前正在研究录音机。从特定站点录制的一种简单方法是执行以下操作:
但是,这会将一个长时间运行的实例锁定到 www.example.com,而实际上我希望它记录我发送给它的任何内容。不带参数使用--proxy-all
不起作用(它会导致 HTTP 客户端出现 500 错误,可能是 WireMock 本身发出的)。
--proxy-all
另一方面,省略会导致 404,因为大概 WireMock 不知道去哪里。因此,我想做类似的事情:
我看不到任何文档说命令行支持此功能,所以我想知道管理 API 是否支持此功能?另一种方法是我构建自己的 API 以在指定的代理 URL 上停止和重新启动 WireMock,但如果已经实现,我宁愿不重新发明轮子。
正如我在另一个问题上所说,使用 Mountebank 可能是一种选择,因为它似乎有一个用于 this 的 API。然而,这看起来更复杂,因为我已经完成了 WireMock 的 90%,如果可以的话,我会坚持下去。
java - WireMock 是否适应相关性?
WireMock 中是否有相关的概念?
我想将一个值从请求转移到响应中。