aweXpect.Mockolate
1.1.0
Prefix Reserved
See the version list below for details.
dotnet add package aweXpect.Mockolate --version 1.1.0
NuGet\Install-Package aweXpect.Mockolate -Version 1.1.0
<PackageReference Include="aweXpect.Mockolate" Version="1.1.0" />
<PackageVersion Include="aweXpect.Mockolate" Version="1.1.0" />
<PackageReference Include="aweXpect.Mockolate" />
paket add aweXpect.Mockolate --version 1.1.0
#r "nuget: aweXpect.Mockolate, 1.1.0"
#:package aweXpect.Mockolate@1.1.0
#addin nuget:?package=aweXpect.Mockolate&version=1.1.0
#tool nuget:?package=aweXpect.Mockolate&version=1.1.0
aweXpect.Mockolate
Expectations to verify interactions with mocks from Mockolate.
Features
Interaction count
Verify that a method was called a specific number of times:
var mock = Mock.Create<IMyService>();
mock.MyMethod();
await That(mock.VerifyMock.Invoked.MyMethod()).Once(); // Exactly once
await That(mock.VerifyMock.Invoked.MyMethod()).Twice(); // Exactly twice
await That(mock.VerifyMock.Invoked.MyMethod()).Never(); // Never called
await That(mock.VerifyMock.Invoked.MyMethod()).AtLeastOnce(); // At least once
await That(mock.VerifyMock.Invoked.MyMethod()).AtLeastTwice(); // At least twice
await That(mock.VerifyMock.Invoked.MyMethod()).AtLeast(3.Times()); // At least 3 times
await That(mock.VerifyMock.Invoked.MyMethod()).AtMostOnce(); // At most once
await That(mock.VerifyMock.Invoked.MyMethod()).AtMostTwice(); // At most twice
await That(mock.VerifyMock.Invoked.MyMethod()).AtMost(4.Times()); // At most 4 times
await That(mock.VerifyMock.Invoked.MyMethod()).Exactly(2.Times()); // Exactly 2 times
Interaction order
Verify that methods were called in a specific sequence:
var mock = Mock.Create<IMyService>();
mock.MyMethod(1);
mock.MyMethod(2);
mock.MyMethod(3);
mock.MyMethod(4);
// Verifies MyMethod(1), then MyMethod(2), then MyMethod(4) were called in order
await That(mock.VerifyMock.Invoked.MyMethod(It.Is(1))).Then(
m => m.Invoked.MyMethod(It.Is(2)),
m => m.Invoked.MyMethod(It.Is(4))
);
Additional Verifications
All interactions are verified
With AllInteractionsAreVerified you can check whether all interactions with the mock have actually been verified. This
helps to detect unintended or forgotten calls.
var mock = Mock.Create<IMyService>();
mock.MyMethod(1);
mock.MyMethod(2);
await That(mock.VerifyMock.Invoked.MyMethod(It.IsAny<int>())).AtLeastOnce();
// Succeeds, because the verification applies to both method calls.
await That(mock.VerifyMock).AllInteractionsAreVerified();
All setups are used
With AllSetupsAreUsed you can check whether all defined setups on the mock have actually been used. This ensures that
no setup configurations remain unused.
var mock = Mock.Create<IMyService>();
mock.SetupMock.Method.MyMethod(It.Is(1)).Returns(10);
mock.SetupMock.Method.MyMethod(It.Is(2)).Returns(20);
mock.MyMethod(1);
// Fails, because the setup for MyMethod(2) was never used.
await That(mock.VerifyMock).AllSetupsAreUsed();
Web Extensions
JSON Content
You can precisely verify JSON content in HTTP requests during your tests. This feature is especially useful for testing HTTP clients and web APIs.
// Verifies that a request was sent with a JSON body equivalent to { "foo": 1, "bar": "baz" }
httpClient.SetupMock.Method
.PostAsync(It.IsAny<Uri>(), It.IsHttpContent().WithJsonMatching(new { foo = 1, bar = \"baz\" }))
.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));
// You can also provide a string representation of the JSON and it ignores formatting differences or property order
httpClient.SetupMock.Method
.PostAsync(It.IsAny<Uri>(), It.IsHttpContent().WithJson("{\"bar\": \"baz\", \"foo\": 1}"))
.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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 is compatible. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- aweXpect.Core (>= 2.27.0)
- Mockolate (>= 1.4.0)
-
net10.0
- aweXpect.Core (>= 2.27.0)
- Mockolate (>= 1.4.0)
-
net8.0
- aweXpect.Core (>= 2.27.0)
- Mockolate (>= 1.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.1 | 64 | 2/10/2026 |
| 1.1.0 | 259 | 2/8/2026 |
| 1.0.0 | 1,538 | 1/19/2026 |
| 0.10.0 | 91 | 1/18/2026 |
| 0.9.0 | 2,334 | 12/5/2025 |
| 0.8.0 | 194 | 12/4/2025 |
| 0.7.0 | 583 | 12/1/2025 |
| 0.6.0 | 562 | 11/24/2025 |
| 0.5.0 | 898 | 10/25/2025 |
| 0.4.0 | 613 | 10/12/2025 |
| 0.3.1 | 1,850 | 10/12/2025 |
| 0.3.0 | 242 | 10/12/2025 |
| 0.2.0 | 279 | 10/11/2025 |
| 0.1.0 | 462 | 10/8/2025 |