Krz*_*iek 5 java junit wiremock spring-cloud spring-cloud-contract
我正在使用 Spring Bootspring-cloud-contract-wiremock和com.github.tomakehurst.wiremock依赖项。我的线模定义存储在 json 文件中。像那样:
directoryA/mappings/detail-mapping-123.json:
{
"request" : {
"urlPath" : "/detail/123",
"method" : "GET"
},
"response" : {
"status" : 200,
"bodyFileName" : "detail.json",
"headers" : {
"Content-Type" : "application/json;charset=UTF-8"
}
}
}
Run Code Online (Sandbox Code Playgroud)
directoryA/__files/detail.json:
{
"id": "123",
"name": "name-123"
}
Run Code Online (Sandbox Code Playgroud)
directoryB/mappings/search-mapping-123.json:
{
"request" : {
"urlPath" : "/service/usa/search",
"queryParameters" : {
"query": {
"equalTo": "123"
}
},
"method" : "GET"
},
"response" : {
"status" : 200,
"bodyFileName" : "search-123.json",
"headers" : {
"Content-Type" : "application/json;charset=UTF-8"
}
}
}
Run Code Online (Sandbox Code Playgroud)
directoryB/__files/search-123.json:
{
"count": 1,
"units": [
{
"name": "A123"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我有标准的 JUnit 测试类,其注释为:
@AutoConfigureWireMock(stubs = {"classpath:/directoryA/mappings", "classpath:/directoryB/mappings"},
files = {"classpath:/directoryA", "classpath:/directoryB"},
port = 18081)
Run Code Online (Sandbox Code Playgroud)
这个文件看起来被wiremock正确识别并且所有定义都被正确解析,但问题在于为请求分配正确的主体文件:当应用程序尝试执行请求时:
GET http://localhost:18081/service/usa/search?query=123 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
然后我收到错误:
java.lang.RuntimeException: java.io.FileNotFoundException: /home/my-project-dir/target/test-classes/directoryA/__files/search-123.json (Not found such file or directory)
Run Code Online (Sandbox Code Playgroud)
所以......问题是bodyFileName在目录directoryA 而不是 directoryB中使用映射文件的映射定义(directoryB/mappings/search-mapping-123.json)部分定义的文件的wiremock搜索。如果会用到
/home/my-project-dir/target/test-classes/directoryB/__files/search-123.json
Run Code Online (Sandbox Code Playgroud)
那么一切都应该正常工作......
有人有类似的问题吗?我不确定这是否是我的配置或wiremock 库中的错误。
小智 1
尝试从注释 @AutoConfigureWireMock 中排除“stubs”和“files”参数,并将映射/文件放在 src/test/resources 中,wiremock 默认从这些路径获取
| 归档时间: |
|
| 查看次数: |
3426 次 |
| 最近记录: |