Skip to content

Adds fluent HttpClient mocking support#434

Merged
Keboo merged 5 commits into
masterfrom
httpClientSupport
Feb 13, 2026
Merged

Adds fluent HttpClient mocking support#434
Keboo merged 5 commits into
masterfrom
httpClientSupport

Conversation

@Keboo

@Keboo Keboo commented Feb 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

Introduces comprehensive and fluent support for mocking HttpClient and HttpMessageHandler within Moq.AutoMock, significantly simplifying the testing of HTTP-dependent code.

Changes Made

  • Automatic HttpClient Resolution: An HttpClientResolver has been added to AutoMocker to automatically provide HttpClient instances backed by a configurable HttpMessageHandler.
  • Fluent API for HTTP Verbs: New extension methods (e.g., SetupHttpGet, SetupHttpPost, SetupHttpPut, SetupHttpDelete, SetupHttpHead) allow for easy setup of specific HTTP requests based on URL, request content, or custom predicates.
  • Flexible Response Configuration: Extended ReturnsResponse methods support various response types (plain text, JSON, byte arrays, streams) with custom status codes and headers. Stream-based responses are handled to ensure reusability across multiple requests.
  • Request Verification: VerifyHttpGet, VerifyHttpPost, VerifyHttpPut, VerifyHttpDelete, VerifyHttpHead extensions are included for verifying specific HTTP request invocations.
  • Sequence Setup: Supports defining a sequence of responses for repeated HTTP calls.
  • Advanced Request Matching: Introduced RequestMatcher and RequestPredicate for more robust and efficient matching of HttpRequestMessage objects.

Why These Changes

These changes aim to streamline the unit testing experience for applications consuming external HTTP services. By providing a rich, fluent, and integrated mocking API for HttpClient and HttpMessageHandler, developers can more easily isolate and test their code without making actual network calls, leading to faster and more reliable tests. The automatic resolution of HttpClient further enhances the seamless integration with AutoMocker's dependency injection capabilities.

How to Test

The added unit tests in Moq.AutoMock.Tests/DescribeHttpClient.cs and Moq.AutoMock.Tests/DescribeHttpMessageHandler.cs demonstrate the usage and verify the functionality of the new HTTP mocking capabilities. These tests can be run to confirm the feature works as expected.

Checklist

  • Unit tests added/updated
  • Documentation added/updated
  • Breaking changes
  • Release notes updated

@Keboo Keboo enabled auto-merge (squash) February 13, 2026 07:23
@Keboo Keboo merged commit fae0453 into master Feb 13, 2026
3 checks passed
@Keboo Keboo deleted the httpClientSupport branch February 13, 2026 07:25
github-actions Bot pushed a commit to BenjaminMichaelis/DotnetTemplates that referenced this pull request May 6, 2026
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updated [Moq.AutoMock](https://github.com/moq/Moq.AutoMocker) from 3.5.0
to 4.0.2.

<details>
<summary>Release notes</summary>

_Sourced from [Moq.AutoMock's
releases](https://github.com/moq/Moq.AutoMocker/releases)._

## 4.0.1

## What's Changed
* Allow GetMock<IServiceProvider>() to return a mock instead of the
AutoMocker instance by @​Keboo in
moq/Moq.AutoMocker#451


**Full Changelog**:
moq/Moq.AutoMocker@v4.0.0...v4.0.1

## 4.0.0

## What's Changed
* Fix 406: Adds tests for disabling source generators by @​Keboo in
moq/Moq.AutoMocker#407
* Bump NUnit3TestAdapter from 5.2.0 to 6.0.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#408
* Bump TUnit from 1.3.15 to 1.5.6 by @​dependabot[bot] in
moq/Moq.AutoMocker#409
* Clarifies Source Generator Ambiguities and Disabling by @​Keboo in
moq/Moq.AutoMocker#411
* Bump the github-actions group with 2 updates by @​dependabot[bot] in
moq/Moq.AutoMocker#413
* Bump NUnit3TestAdapter from 6.0.0 to 6.0.1 by @​dependabot[bot] in
moq/Moq.AutoMocker#416
* Bump TUnit from 1.5.6 to 1.6.5 by @​dependabot[bot] in
moq/Moq.AutoMocker#417
* Adds package validation and documentation by @​Keboo in
moq/Moq.AutoMocker#418
* Bump TUnit from 1.6.5 to 1.7.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#419
* Bump TUnit from 1.7.0 to 1.9.2 by @​dependabot[bot] in
moq/Moq.AutoMocker#420
* Bump NUnit3TestAdapter from 6.0.1 to 6.1.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#421
* Bump TUnit from 1.9.2 to 1.9.81 by @​dependabot[bot] in
moq/Moq.AutoMocker#422
* Bump TUnit from 1.9.81 to 1.12.3 by @​dependabot[bot] in
moq/Moq.AutoMocker#423
* Bump xunit.v3 from 3.2.1 to 3.2.2 by @​dependabot[bot] in
moq/Moq.AutoMocker#424
* Bump TUnit from 1.12.3 to 1.12.53 by @​dependabot[bot] in
moq/Moq.AutoMocker#425
* Adds Use overload for registering implementation type by @​Keboo in
moq/Moq.AutoMocker#426
* Bump TUnit from 1.12.53 to 1.12.111 by @​dependabot[bot] in
moq/Moq.AutoMocker#427
* Adds primary constructor test coverage by @​Keboo in
moq/Moq.AutoMocker#428
* Refactor: Rename `AddFakeLogging` to `WithFakeLogging` by @​Keboo in
moq/Moq.AutoMocker#429
* Bump Microsoft.SourceLink.GitHub from 8.0.0 to 10.0.102 by
@​dependabot[bot] in moq/Moq.AutoMocker#431
* Bump TUnit from 1.12.111 to 1.13.11 by @​dependabot[bot] in
moq/Moq.AutoMocker#433
* Bump MSTest from 4.0.2 to 4.1.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#432
* Adds fluent HttpClient mocking support by @​Keboo in
moq/Moq.AutoMocker#434
* Bump coverlet.collector from 6.0.4 to 8.0.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#435
* Bump TUnit from 1.13.11 to 1.15.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#437
* Bump Microsoft.SourceLink.GitHub from 10.0.102 to 10.0.103 by
@​dependabot[bot] in moq/Moq.AutoMocker#436
* Bump Microsoft.ApplicationInsights from 2.23.0 to 3.0.0 by
@​dependabot[bot] in moq/Moq.AutoMocker#430
* Refactors HTTP response extensions by @​Keboo in
moq/Moq.AutoMocker#438
* Bump NUnit from 4.4.0 to 4.5.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#439
* Bump TUnit from 1.15.0 to 1.17.7 by @​dependabot[bot] in
moq/Moq.AutoMocker#440
* Adds resolver insertion and SimpleTypeResolver base by @​Keboo in
moq/Moq.AutoMocker#441
* Bump TUnit from 1.17.7 to 1.18.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#444
* Bump actions/upload-artifact from 6 to 7 in the github-actions group
by @​dependabot[bot] in moq/Moq.AutoMocker#442
* Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.3.0 by @​dependabot[bot]
in moq/Moq.AutoMocker#443
* Bump NUnit from 4.5.0 to 4.5.1 by @​dependabot[bot] in
moq/Moq.AutoMocker#446
* Bump TUnit from 1.18.0 to 1.19.16 by @​dependabot[bot] in
moq/Moq.AutoMocker#447


**Full Changelog**:
moq/Moq.AutoMocker@v3.6.1...v4.0.0

Commits viewable in [compare
view](https://github.com/moq/Moq.AutoMocker/commits).
</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to BenjaminMichaelis/DotnetTemplates that referenced this pull request May 15, 2026
Updated [Moq.AutoMock](https://github.com/moq/Moq.AutoMocker) from 3.5.0
to 4.0.2.

<details>
<summary>Release notes</summary>

_Sourced from [Moq.AutoMock's
releases](https://github.com/moq/Moq.AutoMocker/releases)._

## 4.0.1

## What's Changed
* Allow GetMock<IServiceProvider>() to return a mock instead of the
AutoMocker instance by @​Keboo in
moq/Moq.AutoMocker#451


**Full Changelog**:
moq/Moq.AutoMocker@v4.0.0...v4.0.1

## 4.0.0

## What's Changed
* Fix 406: Adds tests for disabling source generators by @​Keboo in
moq/Moq.AutoMocker#407
* Bump NUnit3TestAdapter from 5.2.0 to 6.0.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#408
* Bump TUnit from 1.3.15 to 1.5.6 by @​dependabot[bot] in
moq/Moq.AutoMocker#409
* Clarifies Source Generator Ambiguities and Disabling by @​Keboo in
moq/Moq.AutoMocker#411
* Bump the github-actions group with 2 updates by @​dependabot[bot] in
moq/Moq.AutoMocker#413
* Bump NUnit3TestAdapter from 6.0.0 to 6.0.1 by @​dependabot[bot] in
moq/Moq.AutoMocker#416
* Bump TUnit from 1.5.6 to 1.6.5 by @​dependabot[bot] in
moq/Moq.AutoMocker#417
* Adds package validation and documentation by @​Keboo in
moq/Moq.AutoMocker#418
* Bump TUnit from 1.6.5 to 1.7.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#419
* Bump TUnit from 1.7.0 to 1.9.2 by @​dependabot[bot] in
moq/Moq.AutoMocker#420
* Bump NUnit3TestAdapter from 6.0.1 to 6.1.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#421
* Bump TUnit from 1.9.2 to 1.9.81 by @​dependabot[bot] in
moq/Moq.AutoMocker#422
* Bump TUnit from 1.9.81 to 1.12.3 by @​dependabot[bot] in
moq/Moq.AutoMocker#423
* Bump xunit.v3 from 3.2.1 to 3.2.2 by @​dependabot[bot] in
moq/Moq.AutoMocker#424
* Bump TUnit from 1.12.3 to 1.12.53 by @​dependabot[bot] in
moq/Moq.AutoMocker#425
* Adds Use overload for registering implementation type by @​Keboo in
moq/Moq.AutoMocker#426
* Bump TUnit from 1.12.53 to 1.12.111 by @​dependabot[bot] in
moq/Moq.AutoMocker#427
* Adds primary constructor test coverage by @​Keboo in
moq/Moq.AutoMocker#428
* Refactor: Rename `AddFakeLogging` to `WithFakeLogging` by @​Keboo in
moq/Moq.AutoMocker#429
* Bump Microsoft.SourceLink.GitHub from 8.0.0 to 10.0.102 by
@​dependabot[bot] in moq/Moq.AutoMocker#431
* Bump TUnit from 1.12.111 to 1.13.11 by @​dependabot[bot] in
moq/Moq.AutoMocker#433
* Bump MSTest from 4.0.2 to 4.1.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#432
* Adds fluent HttpClient mocking support by @​Keboo in
moq/Moq.AutoMocker#434
* Bump coverlet.collector from 6.0.4 to 8.0.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#435
* Bump TUnit from 1.13.11 to 1.15.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#437
* Bump Microsoft.SourceLink.GitHub from 10.0.102 to 10.0.103 by
@​dependabot[bot] in moq/Moq.AutoMocker#436
* Bump Microsoft.ApplicationInsights from 2.23.0 to 3.0.0 by
@​dependabot[bot] in moq/Moq.AutoMocker#430
* Refactors HTTP response extensions by @​Keboo in
moq/Moq.AutoMocker#438
* Bump NUnit from 4.4.0 to 4.5.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#439
* Bump TUnit from 1.15.0 to 1.17.7 by @​dependabot[bot] in
moq/Moq.AutoMocker#440
* Adds resolver insertion and SimpleTypeResolver base by @​Keboo in
moq/Moq.AutoMocker#441
* Bump TUnit from 1.17.7 to 1.18.0 by @​dependabot[bot] in
moq/Moq.AutoMocker#444
* Bump actions/upload-artifact from 6 to 7 in the github-actions group
by @​dependabot[bot] in moq/Moq.AutoMocker#442
* Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.3.0 by @​dependabot[bot]
in moq/Moq.AutoMocker#443
* Bump NUnit from 4.5.0 to 4.5.1 by @​dependabot[bot] in
moq/Moq.AutoMocker#446
* Bump TUnit from 1.18.0 to 1.19.16 by @​dependabot[bot] in
moq/Moq.AutoMocker#447


**Full Changelog**:
moq/Moq.AutoMocker@v3.6.1...v4.0.0

Commits viewable in [compare
view](https://github.com/moq/Moq.AutoMocker/commits).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Moq.AutoMock&package-manager=nuget&previous-version=3.5.0&new-version=4.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant