RabbitMQ.Client.Mock
1.2.5
dotnet add package RabbitMQ.Client.Mock --version 1.2.5
NuGet\Install-Package RabbitMQ.Client.Mock -Version 1.2.5
<PackageReference Include="RabbitMQ.Client.Mock" Version="1.2.5" />
<PackageVersion Include="RabbitMQ.Client.Mock" Version="1.2.5" />
<PackageReference Include="RabbitMQ.Client.Mock" />
paket add RabbitMQ.Client.Mock --version 1.2.5
#r "nuget: RabbitMQ.Client.Mock, 1.2.5"
#:package RabbitMQ.Client.Mock@1.2.5
#addin nuget:?package=RabbitMQ.Client.Mock&version=1.2.5
#tool nuget:?package=RabbitMQ.Client.Mock&version=1.2.5
RabbitMQ.Client.Mock
Provides a way to mock the RabbitMQ.Client library for unit testing.
Installation
Just add the RabbitMQ.Client.Mock NuGet package to your project.
Usage
// Creates the connection factory which is the entry point for the mock.
IConnectionFactory factory = RabbitMQMocker.CreateConnectionFactory();
// Create connections and channels as you would normally do.
IConnection connection = await factory.CreateConnectionAsync();
IChannel channel = await connection.CreateChannelAsync();
Features
RabbitMQ.Client.Mock supports, or at least tries to support as much as scenarios as possible. Some of the features include:
- Usage of multiple channels so you can mock having multiple consumers & producers that use their own channels.
- Mimics behaviour when deleting queues and exchanges.
- Mimics behaviour regarding client named queues, or server named queues.
- Correct routing of messages, including usage of exchange-to-exchange bindings.
- Supports Direct, Fanout, Headers & Topic exchanges.
- Usage of DeadLetter exchanges and queues.
Note
The solutions contains 3 projects:
- RabbitMQ.Client.Mock: The actual mock implementation.
- RabbitMQ.Client.Mock.Tests: The unit tests for the mock implementation.
- RabbitMQ.Client.Tests: The same unit tests but pointing to an actual localhost based RabbitMQ service.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- RabbitMQ.Client (>= 7.1.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
1.2.5 Release (2025-05-23)
- Fixed a bug with the headers exchange not working correctly when using the "x-match" header.
1.2.4 Release (2025-05-23)
- Fixed a bug that a new consumer on an existing queue containing messages would only receive messages after 30 seconds.
1.2.3 Release (2025-05-22)
- Removed obsolete code (PublishMessageOperation)
- Fixed issue with AsyncAutoResetEvent sometimes immediately reporting timeout.
- Excluded some FakeChannel methods from code coverage because they only forward call to overload.
- Added unit test for BasicRejectAsync
- Tested and fixed Fanout, Headers & Topic exchanges.
1.2.2 Release (2025-05-22)
- Fixed a bug with ConsumerCountAsync throwing exception because of wrong datatype being returned.
- Fixed a bug with BasicNackAsync not returning message to queue when requeue is set to true.
- Added unit tests
1.2.1 Release (2025-05-22)
- Fixed a bug in BasicRejectOperation with a wrong comparison being made. (logical AND instead)
1.2.0 Release (2025-05-21)
- Changed .NET version from .NET 9.0 to .NET 8.0 for improved compatibility.
- Complete refactoring of the internal mock server in order to improve unit test isolation.
- Added support for Fanout, Headers & Topic exchanges (not fully tested yet).
- Improved compliance to RabbitMQ client behaviour.
1.0.2 Release (2025-05-13)
- Added support for exchange to exchange bindings.