Я использую WireMock-Net для заглушки запросов.
Я хочу сделать следующий запрос:
Запрос:
http://localhost:63078/services/query/?q=SELECT Id from User where username='[email protected]'
Запрос состоит из запроса SOQL. Вот фрагмент того, что я пытался сделать:
stub.Given(Request.Create()
.WithPath("/services/query/")
.WithParam("q", "SELECT Id from User where username='[email protected]'")
.UsingGet())
.RespondWith(Response.Create()
.WithStatusCode(200)
.WithHeader("Content-Type", "application/json")
.WithBodyAsJson(new { Id = "5bdf076c-5654-4b3e-842c-7caf1fabf8c9" }));
Проблема в том, что wiremock всегда отвечает 404. Я также пытался использовать RegexMatcher, например:
.WithPath("/services/query/")
.WithParam("q", new WireMock.Matchers.RegexMatcher("SELECT Id from User where username.*$"))
Но у меня все еще есть 404.
Я думаю, что проблема в параметре запроса, потому что он имеет два равенства "=". Может ли кто-нибудь помочь мне решить эту проблему?
Вы можете попробовать сделать кодировку URL. Итак, когда вы делаете
SELECT Id from User where username='[email protected]'
ты должен делать
SELECT %20Id%20from%20User%20where%20username%3D%27user%40gmail.com%27
Надеюсь, поможет.
@JoséSampaio: попробуйте версию 1.0.19
Это было исправлено в последней версии (1.0.19) от WireMock.Net.
Пожалуйста, повторите попытку и отметьте этот ответ как принятый, если он работает правильно для вас.
Подробности: решение основано на Получить параметры URL из строки в .NET
Это работает, если я использую следующее ожидание: - SELECT Id from User where username%3D%27user%40gmail.com%27 Но чтобы использовать его, я должен изменить свою текущую реализацию и, на мой взгляд, это неправильно. Я попробую другую стратегию или подожду "исправления" библиотекой wiremock.net.