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

WireMock作为单个 WAR部署到我的服务器。我按照提供的sample-war 项目来使我的 WAR 工作。这非常有用,所以感谢这个例子。

我的应用程序唯一的一个问题是 WireMock 从 WAR 内部读取映射和配置文件。这些文件的路径可通过文件中的WireMockFileSourceRootcontext-param 进行配置,web.xml但仅当路径指向位于 WAR 中的目录时才有效。

我想将映射和响应文件保存在磁盘上的单独文件夹中。

我已经检查了源代码,并且可以看到 WireMock 使用ServletContextFileSource类从 servlet 上下文中读取映射文件。这个类扩展AbstractFileSource.

我找到了一个很好的候选者SingleRootFileSource,它也扩展了相同的抽象类,在我看来,这个类可以从磁盘的任何目录中读取映射文件,但我不知道如何设置 WireMock 来使用这个类而不是默认类。

你能把我带到正确的方向吗?


哔哔one
浏览 226回答 1
1回答

ABOUTYOU

首先,您需要将读取的文件转换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/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java