FunctionalDev.MoqHelpers
1.1.0
See the version list below for details.
dotnet add package FunctionalDev.MoqHelpers --version 1.1.0
NuGet\Install-Package FunctionalDev.MoqHelpers -Version 1.1.0
<PackageReference Include="FunctionalDev.MoqHelpers" Version="1.1.0" />
paket add FunctionalDev.MoqHelpers --version 1.1.0
#r "nuget: FunctionalDev.MoqHelpers, 1.1.0"
// Install FunctionalDev.MoqHelpers as a Cake Addin #addin nuget:?package=FunctionalDev.MoqHelpers&version=1.1.0 // Install FunctionalDev.MoqHelpers as a Cake Tool #tool nuget:?package=FunctionalDev.MoqHelpers&version=1.1.0
FunctionalDev.MoqHelpers
Object Activation
LazyActivator and MockActivator can be used to create instances of an object. LazyActivator should be used for concrete types, and MockActivator should be used for abstract/interface types.
Both provide the ability to create an object without supplying all constructor arguments, absent arguments will be resolved. Protected/private constructors can also be targeted by these classes.
Object Proxy
ObjectProxy can be used to interact (set/get) private members of a given instance, and can be used to invoke protected/private methods.
Dot separated member access is supported to access members of members recursively. E.g. ObjectProxy.For(person)["Name"."FirstName"]
Static classes can be setup with ObjectProxy.ForStatic
to interact with static classes.
Examples
Given the following class:
public class Person
{
private string Name { set; get; }
private Person(ILogger<Person> logger, string name)
{
Name = name;
}
}
Creating an instance of Person
can be achieved as shown below.
var person = LazyActivator.CreateLazy<Person>("Fred");
// or
var person = LazyActivator.CreateLazy<Person>();
And members can be managed as shown below.
// Get.
var name = ObjectProxy.For(person)["Name"];
// Set.
ObjectProxy.Create(person)["Name"] = "Bob";
Setup Extension Methods
Several extension methods have been provided which enable functional Moq creation (returning Mock{T}
to enable chaining) and to setup private/protected members.
Given an example interface:
public interface IPerson
{
string SetName(string name);
int GetAge();
}
The following can be used to set up an IPerson
interface.
var person = new Mock<IPerson>()
.Setup(x => x.SetName, (string name) => "")
.Setup(x => x.GetAge, () => 25);
Please note that this does not provide any filters on the arguments for methods (such as It.Is<T>(Func<T, bool>)
filtering).
Developer Notes
It is not the intention for this library to provide the ability to test private/protected members, rather to assist the creation of objects prior to being tested correctly.
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 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
- Moq (>= 4.16.1)
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 |
---|---|---|
3.2.0 | 285 | 9/17/2024 |
3.1.6 | 86 | 7/24/2024 |
3.1.5 | 143 | 7/8/2024 |
3.1.4 | 185 | 2/20/2024 |
3.1.3 | 159 | 1/22/2024 |
3.1.2 | 102 | 1/22/2024 |
3.1.1 | 112 | 1/21/2024 |
3.1.0 | 100 | 1/21/2024 |
3.0.25 | 230 | 12/6/2023 |
3.0.24 | 149 | 12/4/2023 |
3.0.23 | 200 | 11/15/2023 |
3.0.22 | 210 | 10/10/2023 |
3.0.21 | 148 | 10/6/2023 |
3.0.20 | 215 | 8/7/2023 |
3.0.19 | 161 | 7/31/2023 |
3.0.18 | 149 | 7/31/2023 |
3.0.17 | 184 | 6/27/2023 |
3.0.16 | 197 | 6/2/2023 |
3.0.15 | 153 | 6/2/2023 |
3.0.14 | 185 | 5/15/2023 |
3.0.13 | 266 | 4/18/2023 |
3.0.12 | 192 | 4/18/2023 |
3.0.11 | 185 | 4/17/2023 |
3.0.10 | 211 | 4/14/2023 |
3.0.9 | 193 | 4/14/2023 |
3.0.8 | 203 | 4/14/2023 |
3.0.7 | 197 | 4/14/2023 |
3.0.6 | 306 | 2/17/2023 |
3.0.5 | 245 | 2/16/2023 |
3.0.4 | 271 | 2/9/2023 |
3.0.3 | 273 | 2/7/2023 |
3.0.2 | 2,089 | 1/24/2023 |
3.0.1 | 369 | 1/11/2023 |
3.0.0 | 314 | 1/11/2023 |
2.1.4 | 499 | 11/1/2022 |
2.1.3 | 571 | 7/19/2022 |
2.1.2 | 502 | 5/3/2022 |
2.1.1 | 462 | 5/3/2022 |
2.1.0 | 450 | 4/27/2022 |
2.0.15 | 440 | 4/26/2022 |
2.0.14 | 506 | 3/10/2022 |
2.0.13 | 758 | 1/27/2022 |
2.0.12 | 669 | 1/24/2022 |
2.0.11 | 660 | 1/21/2022 |
2.0.10 | 434 | 9/10/2021 |
2.0.9 | 359 | 9/10/2021 |
2.0.8 | 319 | 9/3/2021 |
2.0.7 | 319 | 9/3/2021 |
2.0.6 | 344 | 9/2/2021 |
2.0.5 | 318 | 8/27/2021 |
2.0.4 | 300 | 8/27/2021 |
2.0.3 | 314 | 8/13/2021 |
2.0.2 | 363 | 7/29/2021 |
2.0.1 | 346 | 7/28/2021 |
2.0.0 | 343 | 7/28/2021 |
1.1.0 | 396 | 7/28/2021 |
1.0.0 | 383 | 7/27/2021 |