为了账号安全,请及时绑定邮箱和手机立即绑定

如何从磁盘读取映射和响应文件

如何从磁盘读取映射和响应文件

哔哔one 2021-12-30 20:48:29
我WireMock作为单个 WAR部署到我的服务器。我按照提供的sample-war 项目来使我的 WAR 工作。这非常有用,所以感谢这个例子。我的应用程序唯一的一个问题是 WireMock 从 WAR 内部读取映射和配置文件。这些文件的路径可通过文件中的WireMockFileSourceRootcontext-param 进行配置,web.xml但仅当路径指向位于 WAR 中的目录时才有效。我想将映射和响应文件保存在磁盘上的单独文件夹中。我已经检查了源代码,并且可以看到 WireMock 使用ServletContextFileSource类从 servlet 上下文中读取映射文件。这个类扩展AbstractFileSource.我找到了一个很好的候选者SingleRootFileSource,它也扩展了相同的抽象类,在我看来,这个类可以从磁盘的任何目录中读取映射文件,但我不知道如何设置 WireMock 来使用这个类而不是默认类。你能把我带到正确的方向吗?
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

首先,您需要将读取的文件转换SingleRootFileSource为StubMappings. 例如:


SingleRootFileSource stubsFolder = new SingleRootFileSource("my/path/to/jsons/with/recorded/stubs")

stubsFolder.listFilesRecursively().each { TextFile stubFile ->

StubMapping mapping = StubMapping.buildFrom(stubFile.readContentsAsString());

...

然后你需要在 Wiremock 服务器中注册它们。有几种方法可以做到。线模服务器和客户端都可以注册存根。不知道如何运行测试,但是如果每个测试用例需要不同的存根,则可能必须注册存根使用客户端(使用com.github.tomakehurst.wiremock.client.WireMock.stubFor)。如果您决定使用stubFor,则必须引入转换StubMapping为 的简单适配器MappingBuilder,因为stubFor它仅MappingBuilder作为参数。示例适配器:


public class MappingBuilderAdapter implements MappingBuilder {

    StubMapping stubMapping;


    @Override

    public StubMapping build() {

        return this.stubMapping;

    }

    

    ...

客户端必须在调用之前连接到服务器stubFor。configureFor从 wiremock 客户端连接的检出方法,在 [Configuring WireMock using the Java client] 中描述:http ://wiremock.org/docs/running-standalone/


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 225 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号