DivertR 3.0.0
See the version list below for details.
dotnet add package DivertR --version 3.0.0
NuGet\Install-Package DivertR -Version 3.0.0
<PackageReference Include="DivertR" Version="3.0.0" />
paket add DivertR --version 3.0.0
#r "nuget: DivertR, 3.0.0"
// Install DivertR as a Cake Addin #addin nuget:?package=DivertR&version=3.0.0 // Install DivertR as a Cake Tool #tool nuget:?package=DivertR&version=3.0.0
DivertR
DivertR is a .NET library for creating proxy test doubles such as mocks, fakes and spies. It is similar to mocking frameworks like the well known Moq but provides, in addition, features for integration and component testing of wired-up systems.
Installing
Install DivertR as a NuGet package:
Install-Package DivertR
Or via the .NET command line interface:
dotnet add package DivertR
Example Usage
DivertR can facilitate a style of testing where you start with a dependency injection wired-up system and mock out specific parts per test. For example, it can be used to write tests on a WebApp like this:
[Fact]
public async Task GivenFooExistsInRepo_WhenGetFoo_ThenReturnsFoo_WithOk200()
{
// ARRANGE
var foo = new Foo
{
Id = Guid.NewGuid(),
Name = "Foo123"
};
_diverter
.Redirect<IFooRepository>() // Redirect IFooRepository calls
.To(x => x.GetFooAsync(foo.Id)) // matching this method and argument
.Via(() => Task.FromResult(foo)); // via this delegate
// ACT
var response = await _fooClient.GetFooAsync(foo.Id);
// ASSERT
response.StatusCode.ShouldBe(HttpStatusCode.OK);
response.Content.Id.ShouldBe(foo.Id);
response.Content.Name.ShouldBe(foo.Name);
}
[Fact]
public async Task GivenFooRepoException_WhenGetFoo_ThenReturns500InternalServerError()
{
// ARRANGE
_diverter
.Redirect<IFooRepository>()
.To(x => x.GetFooAsync(Is<Guid>.Any))
.Via(() => throw new Exception());
// ACT
var response = await _fooClient.GetFooAsync(Guid.NewGuid());
// ASSERT
response.StatusCode.ShouldBe(HttpStatusCode.InternalServerError);
}
Resources
- Documentation and quickstart guide
- Discussion - Feedback and comments are welcome
- DivertR NuGet package
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 was computed. 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. |
.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 is compatible. |
.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
- Microsoft.Bcl.AsyncInterfaces (>= 1.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 1.0.0)
- System.Collections.Immutable (>= 1.6.0)
- System.Reflection.DispatchProxy (>= 4.5.0)
- System.Threading.Tasks.Extensions (>= 4.5.4)
-
.NETStandard 2.1
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 1.0.0)
- System.Collections.Immutable (>= 1.6.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DivertR:
Package | Downloads |
---|---|
DivertR.DynamicProxy
A DivertR proxy factory implementation that supports proxying class types using Castle DynamicProxy |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.0.0 | 14,533 | 5/22/2023 |
3.1.0 | 102,254 | 1/27/2023 |
3.0.0 | 2,239 | 1/7/2023 |
2.2.0 | 663 | 11/26/2022 |
2.1.0 | 3,866 | 11/13/2022 |
2.0.1 | 5,514 | 8/16/2022 |
2.0.0 | 453 | 8/12/2022 |
1.3.1 | 504 | 5/19/2022 |
1.3.0 | 4,481 | 1/30/2022 |
1.2.0 | 3,227 | 12/7/2021 |
1.1.0 | 2,215 | 11/28/2021 |
1.0.0 | 3,214 | 11/25/2021 |
0.1.0 | 1,374 | 10/6/2021 |