@@ -29,9 +29,28 @@ public HttpRequestMessageAsserter(IEnumerable<HttpRequestMessage> httpRequestMes
2929 /// </summary>
3030 public TestableHttpMessageHandlerOptions Options { get ; }
3131
32+ private HttpRequestMessageAsserter Assert ( int ? expectedCount = null , string condition = "" )
33+ {
34+ if ( ! string . IsNullOrEmpty ( condition ) )
35+ {
36+ _expectedConditions . Add ( condition ) ;
37+ }
38+ Assert ( expectedCount ) ;
39+ return this ;
40+ }
41+
3242 private void Assert ( int ? expectedCount = null )
3343 {
34- var actualCount = Requests . Count ( ) ;
44+ int actualCount ;
45+ try
46+ {
47+ actualCount = Requests . Count ( expectedRequest . Equals ) ;
48+ }
49+ catch ( ObjectDisposedException )
50+ {
51+ throw new HttpRequestMessageAssertionException ( "Can't validate requests, because one or more requests have content that is already disposed." ) ;
52+ }
53+
3554 var pass = expectedCount switch
3655 {
3756 null => actualCount > 0 ,
@@ -72,15 +91,9 @@ public IHttpRequestMessagesCheck WithFilter(Func<HttpRequestMessage, bool> reque
7291 _expectedConditions . Add ( condition ) ;
7392 }
7493
75- try
76- {
77- Requests = Requests . Where ( requestFilter ) ;
78- Assert ( expectedNumberOfRequests ) ;
79- }
80- catch ( ObjectDisposedException )
81- {
82- throw new HttpRequestMessageAssertionException ( "Can't validate requests, because one or more requests have content that is already disposed." ) ;
83- }
94+ Requests = Requests . Where ( requestFilter ) ;
95+ Assert ( expectedNumberOfRequests ) ;
96+
8497 return this ;
8598 }
8699
@@ -112,7 +125,7 @@ private IHttpRequestMessagesCheck WithRequestUri(string pattern, int? expectedNu
112125 UriPattern uriPattern = UriPatternParser . Parse ( pattern ) ;
113126 expectedRequest = expectedRequest with { RequestUri = uriPattern } ;
114127
115- return WithFilter ( x => expectedRequest . Equals ( x ) , expectedNumberOfRequests , condition ) ;
128+ return Assert ( expectedNumberOfRequests , condition ) ;
116129 }
117130
118131 /// <summary>
@@ -134,7 +147,7 @@ private IHttpRequestMessagesCheck WithHttpMethod(HttpMethod httpMethod, int? exp
134147 {
135148 Guard . ThrowIfNull ( httpMethod ) ;
136149 expectedRequest = expectedRequest with { HttpMethod = httpMethod } ;
137- return WithFilter ( x => expectedRequest . Equals ( x ) , expectedNumberOfRequests , $ "HTTP Method '{ httpMethod } '") ;
150+ return Assert ( expectedNumberOfRequests , $ "HTTP Method '{ httpMethod } '") ;
138151 }
139152
140153 /// <summary>
@@ -159,7 +172,7 @@ private IHttpRequestMessagesCheck WithHttpVersion(Version httpVersion, int? expe
159172
160173 expectedRequest = expectedRequest with { HttpVersion = httpVersion } ;
161174
162- return WithFilter ( x => expectedRequest . Equals ( x ) , expectedNumberOfRequests , $ "HTTP Version '{ httpVersion } '") ;
175+ return Assert ( expectedNumberOfRequests , $ "HTTP Version '{ httpVersion } '") ;
163176 }
164177
165178 /// <summary>
@@ -181,7 +194,8 @@ private IHttpRequestMessagesCheck WithHeader(string headerName, int? expectedNum
181194 {
182195 Guard . ThrowIfNullOrEmpty ( headerName ) ;
183196
184- return WithFilter ( x => x . HasHeader ( headerName ) , expectedNumberOfRequests , $ "header '{ headerName } '") ;
197+ expectedRequest = expectedRequest . AddHeader ( headerName ) ;
198+ return Assert ( expectedNumberOfRequests , $ "header '{ headerName } '") ;
185199 }
186200
187201 /// <summary>
@@ -206,7 +220,9 @@ private IHttpRequestMessagesCheck WithHeader(string headerName, string headerVal
206220 Guard . ThrowIfNullOrEmpty ( headerName ) ;
207221 Guard . ThrowIfNullOrEmpty ( headerValue ) ;
208222
209- return WithFilter ( x => x . HasHeader ( headerName , headerValue ) , expectedNumberOfRequests , $ "header '{ headerName } ' and value '{ headerValue } '") ;
223+ expectedRequest = expectedRequest . AddHeader ( headerName , headerValue ) ;
224+
225+ return Assert ( expectedNumberOfRequests , $ "header '{ headerName } ' and value '{ headerValue } '") ;
210226 }
211227
212228 /// <summary>
@@ -229,6 +245,6 @@ private IHttpRequestMessagesCheck WithContent(string pattern, int? expectedNumbe
229245 Guard . ThrowIfNull ( pattern ) ;
230246
231247 expectedRequest = expectedRequest with { Content = pattern } ;
232- return WithFilter ( x => expectedRequest . Equals ( x ) , expectedNumberOfRequests , $ "content '{ pattern } '") ;
248+ return Assert ( expectedNumberOfRequests , $ "content '{ pattern } '") ;
233249 }
234250}
0 commit comments