7

我有一个连接到外部第三方 API 的应用程序,最近 API 的测试实例并不是特别可靠。这会停止开发进度并将我们的构建管道变为红色,因此我想添加一个 HTTP 记录代理来阻止这种情况发生。

我推荐过WireMock,并尝试过它的录制和播放功能,它看起来确实非常好——它几乎是开箱即用的。我们只是简单地更改外部服务的配置 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 插件,它可能是可用的。如果这可以在控制台上完成,那就太好了,但是手册的措辞表明,维护者认为播放和记录是分开的。

我确实想知道我是否可以切换到Mountebank,看起来它可能支持这一点,但事实证明,播放和录制在这里也是独立的模式。无论如何,我喜欢 WireMock 上手的容易程度,所以如果可能的话,我想坚持下去。

4

1 回答 1

6

但是,WireMock 不会完全按照您的要求进行操作:

1)回放时可以使用--proxy-all参数,不能使用。--record-mappings这将导致任何与现有存根映射(记录或其他方式)不匹配的请求被代理到实际服务。

2) 一种让您非常接近您所追求的解决方法是在您收集一些新记录的映射后发送POST到端点。/__admin/mappings/reset这会导致文件系统被扫描并(重新)加载所有映射。

于 2016-11-22T21:20:21.593 回答