Сопоставить путь URL со строкой запроса - PullRequest
0 голосов
/ 28 апреля 2018

Я отправляю запрос от SOAPUI на сервер Wiremock и пытаюсь сопоставить URL.

Это отправляемый запрос: /user/test/?and=query

Я написал следующее регулярное выражение:

stubFor(post(urlPathMatching("/user/test/\\?(and)\\=([a-z]*)"))

Проблема в том, когда я пытаюсь сопоставить "?" когда я использую один обратный слеш для захвата литерального символа, я получаю сообщение об ошибке в Java:

"Illegal Escape Character"

Что я пытался сделать, чтобы решить проблему: Я знаю, что решение состоит в том, чтобы использовать вторую обратную косую черту, чтобы захватить "?" например, «\?», но когда я отправляю запрос, я получаю сообщение об ошибке, в котором говорится, что URL не совпадают, поскольку этот запрос сопоставляется с исходным, отправляемым из мыла ui:

/user/test/\?(and)\=([a-z]*) 

Может кто-нибудь, пожалуйста, помогите мне в этом?

РЕДАКТИРОВАТЬ: Вторая попытка Я пытался использовать точечную нотацию для представления "?" и символ "=". Я проверил это на тестере регулярных выражений, и он проверяет, но он все еще говорит, что URL не совпадает на мыльном интерфейсе.

Регулярное выражение: stubFor(post(urlPathMatching("/user/test/.*(and).*([a-z]*)")).atPriority(1)

несоответствующий URL: /user/test/.*(and).*([a-z]*)

Ответы [ 2 ]

0 голосов
/ 16 августа 2018

Когда вы используете urlPathMatching(), вы не должны помещать параметры запроса в URL. Этот подход работает только для urlEqualTo().

Вместо этого вы должны указать параметры отдельно, используя withQueryParam(), поэтому ваша настройка заглушки должна быть:

stubFor(post(urlPathMatching("/user/test/")).withQueryParam("and", matching("[a-z]*")));
0 голосов
/ 28 апреля 2018

\\ это просто экранировать \, вы должны добавить еще один \ раньше? сбежать? Именно так: stubFor(post(urlPathMatching("/user/test/\\\?(and)\\=([a-z]*)"))

...