#java #spring #dropwizard #wiremock
Вопрос:
Недавно узнал о сопоставлении запросов в wiremock (http://wiremock.org/docs/request-matching/). Любопытно, что происходит, когда тело запроса совпадает с несколькими сопоставлениями (определено для одного и того же URL-адреса с разными условиями и возвращает другой ответ json)?
Ответ №1:
Технически, WireMock никогда не будет совпадать дважды-как только он найдет единственное совпадение, он вернет это совпадение. Основываясь на моем собственном тестировании с использованием отдельных файлов сопоставления, это обычно самое последнее добавленное сопоставление (я не знаю, как это работает с программным созданием заглушек, но я предполагаю, что последний добавленный заглушка будет сопоставлен и возвращен).
Чтобы избежать такого рода двусмысленности, есть несколько стратегий, которые вы можете использовать, но мой личный фаворит-использовать priority
поле вместе с конкретным и общим отображением.
{
"priority": 1,
"request": {
"url": "/test",
"queryParameters": {
"search_term": {
"equalTo": "WireMock"
}
}
},
"response": {
"status": 201
}
}
{
"priority": 10,
"request": {
"url": "/test",
"queryParameters": {
"search_term": {
"matches": "*"
}
}
},
"response": {
"status": 204
}
}
Более подробную информацию о приоритете можно найти здесь.
Я также хотел бы оспорить, что у вас не должно быть двух конкретных сопоставлений, которые будут совпадать-сопоставитель должен отличаться достаточно, чтобы разделить их. Если вам действительно нужны два одинаковых соответствия, чтобы смоделировать изменение данных или какой-либо другой рабочий процесс, вы можете использовать сценарии для достижения этой цели.