我继承了一个现有的API组件测试框架(Java),它通过触发一个带有运行在其中的API的对接程序来工作,而第二个则继承了一个模拟终端数据源的Wiremock服务器。测试是用JUnit5编写的。
码头工人是使用Gradle composeUp启动的,而不是在我的代码中。测试代码中唯一的设置是声明端口号:
WireMock.configureFor("localhost", 8080);这一切都很好,Wiremock服务器使用映射文件接收来自API的请求,没有问题,并返回适当的模拟响应。
然而,这种方法意味着我对API和模拟之间所发生的事情几乎没有什么可见性,所以如果他们‘都在做我认为他们正在做的事情,那么就很难确定他们在做什么。对于一些边缘的情况,我真的需要有更多的信息,这两个是如何相互作用。
因为我没有一个已声明的Wiremock实例,所以我不能使用它的方法,如getAllServeEvents()和isRunning()等,这将是理想的选择。
是否有任何方法可以连接到这个Wiremock服务器,这样我就可以访问它的方法,并且可以收集一些关于它正在做的事情的信息,就像我只是在内存中嘲笑一样。我似乎还记得,在JUnit4中,您必须显式声明Wiremock (WiremockRule?)这会给我提供一个参考,比如:
List<ServeEvent> allServeEvents = <mock>.getAllServeEvents();但现在我的专业能力有限。
发布于 2021-09-09 11:39:17
由于您已经使用configureFor调用设置了WireMock的静态DSL,所以实际上可以调用WireMock.getAllServeEvents(),这将提取当前WireMock服务器请求日志中的所有内容。
您还可以通过API对GET进行http://localhost:8080/__admin/requests操作来提取日志。
最后,如果您能够更改Docker容器的启动命令行以将--verbose添加到WireMock命令中,那么它将开始记录容器的stdout的每个请求/响应,以便您可以使用Docker跟踪它。
https://stackoverflow.com/questions/69096704
复制相似问题