Skip to content

feat: add parameter for HttpRequestMessage#461

Merged
vbreuss merged 2 commits into
mainfrom
topic/add-parameter-for-httprequestmessage
Feb 6, 2026
Merged

feat: add parameter for HttpRequestMessage#461
vbreuss merged 2 commits into
mainfrom
topic/add-parameter-for-httprequestmessage

Conversation

@vbreuss

@vbreuss vbreuss commented Feb 6, 2026

Copy link
Copy Markdown
Member

This PR adds support for matching HttpRequestMessage parameters in Mockolate’s web helpers, and wires up HttpClient mocking to allow SendAsync setups using the new request matcher.

Key Changes:

  • Introduced It.IsHttpRequestMessage(HttpMethod? method = null) fluent parameter with URI/content/header sub-matchers.
  • Added HttpClientExtensions.SendAsync(IParameter<HttpRequestMessage>) setup helper targeting HttpMessageHandler.SendAsync.
  • Added/updated unit tests and API snapshot expectations for the new API surface.

@vbreuss vbreuss self-assigned this Feb 6, 2026
Copilot AI review requested due to automatic review settings February 6, 2026 14:38
@vbreuss vbreuss added the enhancement New feature or request label Feb 6, 2026
@vbreuss vbreuss linked an issue Feb 6, 2026 that may be closed by this pull request

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for matching HttpRequestMessage parameters in Mockolate’s web helpers, and wires up HttpClient mocking to allow SendAsync setups using the new request matcher.

Changes:

  • Introduced It.IsHttpRequestMessage(HttpMethod? method = null) fluent parameter with URI/content/header sub-matchers.
  • Added HttpClientExtensions.SendAsync(IParameter<HttpRequestMessage>) setup helper targeting HttpMessageHandler.SendAsync.
  • Added/updated unit tests and API snapshot expectations for the new API surface.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.cs Adds method-matching tests for IsHttpRequestMessage(method)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WithHeadersTests.cs Adds header matching tests for request/content/default headers
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WhoseUriIsTests.cs Adds URI matching tests for request matcher
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WhoseStringContentIsTests.cs Adds string-body/media-type matching tests for request content
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WhoseContentIsTests.cs Adds content media-type matching coverage
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WhoseBinaryContentIsTests.cs Adds binary/body/media-type matching coverage
Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt Updates API snapshot for new request matcher + SendAsync overload
Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt Updates API snapshot for new request matcher + SendAsync overload
Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt Updates API snapshot for new request matcher + SendAsync overload
Source/Mockolate/Web/ItExtensions.cs Adjusts header matcher API and header matching to include alternative headers
Source/Mockolate/Web/ItExtensions.HttpRequestMessage.cs Adds request matcher parameter + fluent configuration
Source/Mockolate/Web/ItExtensions.HttpContent.cs Adjusts header matcher API for content parameters
Source/Mockolate/Web/HttpClientExtensions.cs Adds SendAsync(IParameter<HttpRequestMessage>) setup path via mocked handler

Comment thread Source/Mockolate/Web/ItExtensions.cs
Comment thread Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.cs Outdated
Comment thread Source/Mockolate/Web/HttpClientExtensions.cs
@github-actions

github-actions Bot commented Feb 6, 2026

Copy link
Copy Markdown

Test Results

    21 files  ±  0      21 suites  ±0   7m 37s ⏱️ + 1m 0s
 2 635 tests + 88   2 634 ✅ + 88  1 💤 ±0  0 ❌ ±0 
17 710 runs  +616  17 709 ✅ +616  1 💤 ±0  0 ❌ ±0 

Results for commit f3d53fe. ± Comparison against base commit 9798852.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Feb 6, 2026

Copy link
Copy Markdown

🚀 Benchmark Results

Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.3 LTS (Noble Numbat)
Intel Xeon Platinum 8370C CPU 2.80GHz (Max: 2.66GHz), 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.102
[Host] : .NET 10.0.2 (10.0.2, 10.0.225.61305), X64 RyuJIT x86-64-v4

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

Method Mean Error StdDev Gen0 Gen1 Allocated
Simple_Mockolate 1.587 μs 0.0186 μs 0.0174 μs 0.1507 - 3.73 KB
Simple_Moq 134.463 μs 0.7052 μs 0.5888 μs 0.4883 0.2441 14.56 KB
Simple_NSubstitute 5.922 μs 0.0357 μs 0.0334 μs 0.3662 - 9.14 KB
Simple_FakeItEasy 6.539 μs 0.0844 μs 0.0790 μs 0.3281 - 8.12 KB

@vbreuss vbreuss enabled auto-merge (squash) February 6, 2026 14:44
@sonarqubecloud

sonarqubecloud Bot commented Feb 6, 2026

Copy link
Copy Markdown

@vbreuss vbreuss merged commit 2ae9bf8 into main Feb 6, 2026
12 checks passed
@vbreuss vbreuss deleted the topic/add-parameter-for-httprequestmessage branch February 6, 2026 14:54
@github-actions

github-actions Bot commented Feb 7, 2026

Copy link
Copy Markdown

This is addressed in release v1.3.0.

@github-actions github-actions Bot added the state: released The issue is released label Feb 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request state: released The issue is released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add WithHeaders to HttpRequestMessage parameter

2 participants