Skip to content

feat: simplify specifying the return value of HttpClient setup methods#497

Merged
vbreuss merged 4 commits intomainfrom
topic/simplify-returnsasync-for-httpclient
Feb 28, 2026
Merged

feat: simplify specifying the return value of HttpClient setup methods#497
vbreuss merged 4 commits intomainfrom
topic/simplify-returnsasync-for-httpclient

Conversation

@vbreuss
Copy link
Copy Markdown
Member

@vbreuss vbreuss commented Feb 28, 2026

Adds new HttpClient setup helpers to allow specifying HttpResponseMessage return values more concisely (e.g., .ReturnsAsync(HttpStatusCode.OK)), and updates the web-related tests to use the new overloads.

Key Changes:

  • Introduce HttpClientExtensions.ReturnsAsync(...) overloads for HttpStatusCode + optional content/media type.
  • Refactor existing HttpClient-related tests to use the simplified .ReturnsAsync(HttpStatusCode.…) form.
  • Remove duplicated XML <summary> blocks from HttpClientExtensions partials (keeps docs centralized).

@vbreuss vbreuss self-assigned this Feb 28, 2026
Copilot AI review requested due to automatic review settings February 28, 2026 17:35
@vbreuss vbreuss added the enhancement New feature or request label Feb 28, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 28, 2026

Test Results

    21 files      21 suites   6m 11s ⏱️
 2 793 tests  2 792 ✅ 1 💤 0 ❌
18 768 runs  18 767 ✅ 1 💤 0 ❌

Results for commit b3323da.

♻️ This comment has been updated with latest results.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds new HttpClient setup helpers to allow specifying HttpResponseMessage return values more concisely (e.g., .ReturnsAsync(HttpStatusCode.OK)), and updates the web-related tests to use the new overloads.

Changes:

  • Introduce HttpClientExtensions.ReturnsAsync(...) overloads for HttpStatusCode + optional content/media type.
  • Refactor existing HttpClient-related tests to use the simplified .ReturnsAsync(HttpStatusCode.…) form.
  • Remove duplicated XML <summary> blocks from HttpClientExtensions partials (keeps docs centralized).

Reviewed changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsUriTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsUriTests.WithQueryTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsUriTests.WithPortTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsUriTests.WithPathTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsUriTests.WithHostTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsUriTests.ForHttpAndHttpsTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WithHeadersTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WhoseUriIsTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpRequestMessageTests.WhoseContentIsTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.WithStringTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.WithStringMatchingTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.WithMediaTypeTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.WithHeadersTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.WithFormDataTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.WithBytesTests.cs Switch HttpClient setups to .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.cs Update setups to use .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.Setup.PutTests.cs Update setups to use .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.Setup.PostTests.cs Update setups to use .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.Setup.PatchTests.cs Update setups to use .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.Setup.GetTests.cs Update setups to use .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.Setup.DeleteTests.cs Update setups to use .ReturnsAsync(HttpStatusCode.OK)
Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.ReturnsAsyncTests.cs Add coverage for new ReturnsAsync(HttpStatusCode, …) overloads
Source/Mockolate/Web/HttpClientExtensions.Verify.Put.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Verify.Post.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Verify.Patch.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Verify.Get.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Verify.Delete.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Setup.Put.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Setup.Post.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Setup.Patch.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Setup.Get.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.Setup.Delete.cs Remove duplicate class <summary> from partial
Source/Mockolate/Web/HttpClientExtensions.ReturnsAsync.cs Add new ReturnsAsync overloads to build HttpResponseMessage from status/content inputs

Comment thread Source/Mockolate/Web/HttpClientExtensions.ReturnsAsync.cs Outdated
Comment thread Source/Mockolate/Web/HttpClientExtensions.ReturnsAsync.cs Outdated
Comment thread Source/Mockolate/Web/HttpClientExtensions.ReturnsAsync.cs Outdated
Comment thread Tests/Mockolate.Tests/Web/HttpClientExtensionsTests.ReturnsAsyncTests.cs Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 28, 2026

🚀 Benchmark Results

Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.3 LTS (Noble Numbat)
AMD EPYC 7763 2.60GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.103
[Host] : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v3

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

Method Mean Error StdDev Gen0 Gen1 Allocated
Simple_Mockolate 1.513 μs 0.0154 μs 0.0144 μs 0.2460 - 4.02 KB
Simple_Moq 177.744 μs 0.6002 μs 0.5012 μs 0.4883 - 14.55 KB
Simple_NSubstitute 5.690 μs 0.0578 μs 0.0540 μs 0.5569 0.0076 9.14 KB
Simple_FakeItEasy 6.354 μs 0.0355 μs 0.0296 μs 0.4959 - 8.11 KB

Copilot AI review requested due to automatic review settings February 28, 2026 17:54
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 38 out of 38 changed files in this pull request and generated 1 comment.

@vbreuss vbreuss enabled auto-merge (squash) February 28, 2026 18:00
@sonarqubecloud
Copy link
Copy Markdown

@vbreuss vbreuss merged commit e4100c8 into main Feb 28, 2026
12 checks passed
@vbreuss vbreuss deleted the topic/simplify-returnsasync-for-httpclient branch February 28, 2026 18:04
@github-actions
Copy link
Copy Markdown

This is addressed in release v1.5.0.

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.

Simplify creating HttpResponseMessage for HttpClient mocks

2 participants