Я добавил несколько точек останова в ваш тест, и кажется, что автоматически созданная конечная точка макета равна mock://http:abc/bcd
, а не mock:http://abc/bcd
.
Чтобы выяснить, почему это происходит, вы можете обратиться к методу org.apache.camel.impl.InterceptSendToMockEndpointStrategy#registerEndpoint
, который вызывается как часть автоматической регистрации конечной точки. //
удалено из http URI. И затем к org.apache.camel.util.URISupport#normalizeUri
методу, где //
добавляется для mock
префикса uri.
В реализации InterceptSendToMockEndpointStrategy
также есть хороший комментарий, но я не смог найти его в документации.
// создаем фиктивную конечную точку, которую мы будем использовать как перехватчик
// replace: // from, чтобы облегчить поиск фиктивной конечной точки, не имея double: // in uri
Когда вы изменяете его на getMockEndpoint("mock://http:abc/bcd")
, тест проходит.
Лучший способ избежать этих проблем - передать false
в качестве второго параметра метода getMockEndpoint()
, если вы ожидаете уже созданную конечную точку. Это вызовет исключение, если фиктивная конечная точка не существует. В противном случае создается новая фиктивная конечная точка по требованию.