Description
Is your feature request related to a problem? Please describe.
I'm using httpclient-interception and WireMock.Net together.
The scenario:
My application talks to an external (central) API (SaltBae), and from SaltBae I receive a list of different servers (SteakServers). In my integration tests, I intercept all requests going to SaltBae with httpclient-interception
and all SteakServers are mocked and created by using WireMock.Net
. The HttpClient
used for the testing is created from _clientOptions.CreateHttpClient();
and is injected with Autofac in my test setup. This all works nicely so far.
The problem:
However, to make the above work I had to set ThrowOnMissingRegistration
to false
because httpclient-interception
would throw on requests that are meant to be handled by WireMock.Net
. But I would still like to have ThrowOnMissingRegistration = true
while it ignores any requests that go to any of the Steak servers. ThrowOnMissingRegistration
is very useful while writing tests as it shows exactly which requests still need to be mocked.
Describe the solution you'd like
Basically use the fluent API for creating requests that are then added to a special property IgnoredRequests
, which are then taken into account before throwing an MissingRegistrationException
_clientOptions = new HttpClientInterceptorOptions
{
ThrowOnMissingRegistration = true,
};
new HttpRequestInterceptionBuilder()
.Requests()
.ForHttp()
.ForHost("localhost")
.ForPort(-1)
.IgnoringPath()
.IgnoringQuery()
.RegisterWith(_clientOptions.IgnoredRequests);
or a simpler solution might be a property that set all requests to localhost to be ignored by the MissingRegistrationException
Describe alternatives you've considered
I tried the following to whitelist all localhost requests but that still intercepts the requests and doesn't return any response
new HttpRequestInterceptionBuilder()
.Requests()
.ForGet()
.ForHttp()
.ForHost("localhost")
.ForPort(-1)
.IgnoringPath()
.IgnoringQuery()
.RegisterWith(_clientOptions);
I also tried moving away from httpclient-interception and replace that with WireMock.Net but that caused more problems as the urls werent intercepted anymore and httpclient-interception
is just exactly what I need.
Additional context
Nope