我有一个连接到外部第三方API的应用程序,最近该API的测试实例并不是特别可靠。这会阻止开发进度并将我们的构建管道变成红色,因此我想添加一个 HTTP 记录代理来阻止这种情况发生。
我有过WireMock http://wiremock.org/推荐,并尝试过录音和播放功能 http://wiremock.org/docs/record-playback/,它看起来确实非常好——它几乎是开箱即用的。我们只需更改外部服务配置的 URL,然后像这样记录:
java -jar wiremock-standalone-2.3.1.jar \
--port 8080 \
--proxy-all="https://test-api.example.com/" \
--record-mappings \
--verbose
这会在当前工作目录中创建缓存文件夹,然后可以通过杀死录音机并切换到播放来切换到播放模式:
java -jar wiremock-standalone-2.3.1.jar \
--port 8080 \
--verbose
然而,要在实践中使用它,我需要设置一个通过测试回归包运行的应用程序实例,以记录大量 API 使用情况,并开始每天一次。然后,我需要停止录音机并将缓存文件复制到播放进程,然后重新启动播放进程。
这可能会起作用,但感觉就像有很多移动部件,理想情况下我想同时运行播放和录制。如果需要新的 API 调用(由于自然的项目更改),这将允许自动刷新缓存,但会在找到匹配项时默认播放。
这可能吗?我不是一名 Java 程序员,但假设如果编写一个 WireMock 插件,它可能是可用的。如果这可以在控制台上完成,那就太好了,但是手册的措辞表明维护人员认为播放和录制是分开的事情。
我确实想知道我是否可以切换到骗子 http://www.mbtest.org/,看起来像它可能支持这个 http://www.mbtest.org/docs/api/proxies,然而事实证明播放和录音在这里也是不同的模式 https://stackoverflow.com/a/36706200。无论如何,我喜欢 WireMock 上手的简单性,因此如果可能的话我想坚持使用它。