WireMock использует неправильный каталог __files для конфигурации сопоставлений нескольких каталогов - PullRequest
0 голосов
/ 18 сентября 2018

Я использую Spring Boot с зависимостями spring-cloud-contract-wiremock и com.github.tomakehurst.wiremock.Мои определения 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"
    }
  }
}

directoryA / __ files / detail.json :

{
  "id": "123",
  "name": "name-123"
}

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"
    }
  }
}

directoryB / __ files / search-123.json :

{
  "count": 1,
  "units": [
    {
      "name": "A123"
    }
  ]
}

У меня есть стандартный тестовый класс JUnit, помеченный:

@AutoConfigureWireMock(stubs = {"classpath:/directoryA/mappings", "classpath:/directoryB/mappings"},
        files = {"classpath:/directoryA", "classpath:/directoryB"},
        port = 18081)

Похоже, что эти файлы правильно распознаются Wiremock, и все определения анализируются правильно, но проблемаэто с назначением правильного файла тела для запроса: Когда приложение пытается выполнить запрос:

GET http://localhost:18081/service/usa/search?query=123 HTTP/1.1

Тогда я получаю ошибку:

java.lang.RuntimeException: java.io.FileNotFoundException: /home/my-project-dir/target/test-classes/directoryA/__files/search-123.json (Not found such file or directory) 

Итак ... Проблема в том, что Wiremockпоиск файла, определенного в bodyFileName части определения сопоставления (directoryB / mappings / search-mapping-123.json) в каталоге directoryA вместо directoryB , из которого использовался файл сопоставления.Если будет использоваться

/home/my-project-dir/target/test-classes/directoryB/__files/search-123.json

, то все должно работать нормально ...

У кого-нибудь была подобная проблема?Я не уверен, если это ошибка в моей конфигурации или в библиотеке Wiremock.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...