Wiremock文档指出 withBodyFile 中指定的文件的位置应位于 src / test / resources / __ files 中。我想在 src / test / resources / Testing_ABC / Testcase2 / myfile.xml中有文件。
有什么方法可以实现这个目标吗?我试过跟随,但它似乎不起作用!
stubFor(get(urlPathEqualTo("/abc")).willReturn
(aResponse().withHeader("Content-Type",
"text/xml; charset=utf-8").withHeader
("Content-Encoding",
"gzip")
.withBodyFile
("src/test/resources/Testing_ABC/Testcase2/myfile.xml)));
但是,当我将文件放在src / test / resources / __ files / myfile.xml中并相应地更改路径时,它可以正常工作。
我只是想知道我是否可以在__files以外的资源中的其他目录中查看线程,只是为了在项目中拥有良好的资源结构。
答案 0 :(得分:0)
这似乎是您在创建规则时需要配置的内容。尝试
@Rule
public final WireMockRule rule = new WireMockRule(WireMockConfiguration.wireMockConfig()
.withRootDirectory("src/test/resources/Testing_ABC"));
然后你可以在测试中使用.withBodyFile("Testcase2/myfile.xml)
。
答案 1 :(得分:0)
我正在使用此Kotlin Config类来自定义根目录。 仍然要求响应文件位于__files目录中。
@Configuration
class Config: WireMockConfigurationCustomizer {
override fun customize(config: WireMockConfiguration?) {
config!!.withRootDirectory("customer-client/src/test/resources")
}
}
@AutoConfigureWireMock
答案 2 :(得分:0)
对于Java和Spock,但仍使用__files
文件夹
@TestConfiguration
public class WireMockConfig {
@Bean
public WireMockConfigurationCustomizer wireMockConfigurationCustomizer() {
return config -> {
config.withRootDirectory("src/integration-test/resources");
};
}
}
然后在任何ApplicationContext
初始化程序存在的地方:
@SpringBootTest(classes = [Application.class, WireMockConfig.class], webEnvironment = RANDOM_PORT)
@ContextConfiguration()
abstract class WireMockIntegrationSpec extends Specification {
}
然后在您的测试中:
@AutoConfigureWireMock(port = 9089)
@Unroll
class ApplicationSpec extends WireMockIntegrationSpec {
def "Some test" () {
}
}
您的资源将从src/integration-test/resources/__files
提供。
确保此目录结构存在