使用 Wiremock 进行存根 - 使用 BodyFile 位置,而不是_files

2022-09-03 03:02:36

Wiremock Documentation 指出 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并相应地更改路径时,它工作正常。

我只是想知道我是否可以让wiremock在资源中的其他目录中查找__files只是为了在项目中拥有良好的资源结构。


答案 1

我正在使用此 Kotlin Config 类来自定义根目录。它仍要求响应文件位于__files目录中。

@Configuration
class Config: WireMockConfigurationCustomizer {
    override fun customize(config: WireMockConfiguration?) {
        config!!.withRootDirectory("customer-client/src/test/resources")
    }
}

@AutoConfigureWireMock

答案 2

对于 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


推荐