ActivateAnything 0.3.2
dotnet add package ActivateAnything --version 0.3.2
NuGet\Install-Package ActivateAnything -Version 0.3.2
<PackageReference Include="ActivateAnything" Version="0.3.2" />
paket add ActivateAnything --version 0.3.2
#r "nuget: ActivateAnything, 0.3.2"
// Install ActivateAnything as a Cake Addin
#addin nuget:?package=ActivateAnything&version=0.3.2
// Install ActivateAnything as a Cake Tool
#tool nuget:?package=ActivateAnything&version=0.3.2
An AnythingActivator
will make an extreme effort to find and instantiate a concrete class
which is assignable to a Type
, whether or not the Type is concrete, whether or not the
Type has constructor dependencies, whether or not a suitable concrete subtype is found
in any currently loaded Assembly
.
The attempt to find and instantiate suitable Types is rule-driven.
There are three kinds of IActivateAnythingRule
.
IFindTypeRule
provides rules for where to look for candidate concrete subtypes of an abstract typeIActivateInstanceRule
simply returns an instance of a concrete type.IChooseConstructorRule
rules for how to choose between constructors when a concreteType
has been chosen.
The <em>extremity</em> of the effort lies in its recursive attempt to find and construct the <em>dependencies</em>.
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows |
.NET Core | netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard2.0 netstandard2.1 |
.NET Framework | net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen40 tizen60 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.NETFramework 4.5
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ActivateAnything:
Package | Downloads |
---|---|
FixtureBase
Don't spend hours writing code to mock a dozen dependencies, and more hours debugging it. Just write your test code, and let FixtureBase create the dependencies for you. FixtureBase constructs your UnitUnderTest to test your codebase end-to-end, with external dependencies auto-faked and automatically injected in just the right place; even constructor dependencies that are several layers deep. You just write your tests: ``` public class FixtureBaseExample : FixtureBaseWithDbAndHttpFor<AUseCase> { [Fact] public void UUTSendsDataToDb() { var newDatum = new Datum{Id=99, Name="New!" }; UnitUnderTest.InsertDb(newDatum); Db.ShouldHaveInserted("Data",newDatum); } [Fact] public void UUTreturnsDataFromDbQuerySingleColumn() { var dbData = new[] { "row1", "row2", "row3", "row4"}; Db.SetUpForQuerySingleColumn(dbData); UnitUnderTest.FromDbStrings().ShouldEqualByValue(dbData); } [Fact] public async Task UUTGetHttpReturnsDataFromService() { var contentFromService = "IGotThis!"; HttpClient .Setup(m => true) .Returns(new HttpResponseMessage(HttpStatusCode.OK) {Content = new StringContent(contentFromService)}); (await UnitUnderTest.GetHttp()).ShouldBe(contentFromService); HttpClient.Verify(x=>x.Method==HttpMethod.Get); } } ``` The included examples demonstrate FixtureBases for applications which depend on Ado.Net IDbConnections and on HttpClient network connections. - To create your own FixtureBase with your own preferred Fakes, see the examples at <https://github.com/chrisfcarroll/ActivateAnything/blob/master/FixtureBase/FixtureExample.cs.md> - For how it's done, see <https://github.com/chrisfcarroll/ActivateAnything/blob/master/FixtureBase/FixtureBase.cs> Construction is done by - [ActivateAnything](https://www.nuget.org/packages/ActivateAnything) Faking is done by - [TestBase.AdoNet](https://www.nuget.org/packages/TestBase.AdoNet) - [TestBase.HttpClient.Fake](https://www.nuget.org/packages/TestBase.HttpClient.Fake) For more tools focussed on cutting the cost of unit testing, see also: - [TestBase](https://www.nuget.org/packages/TestBase) - [TestBase.AspNetCore.Mvc](https://www.nuget.org/packages/TestBase.AspNetCore.Mvc) - [TestBase-Mvc](https://www.nuget.org/packages/TestBase-Mvc) - [TestBase.AdoNet](https://www.nuget.org/packages/TestBase.AdoNet) - [TestBase.HttpClient.Fake](https://www.nuget.org/packages/TestBase.HttpClient.Fake) - [Serilog.Sinks.ListOfString](https://www.nuget.org/packages/Serilog.Sinks.Listofstring) - [Extensions.Logging.ListOfString](https://www.nuget.org/packages/Extensions.Logging.ListOfString) |
GitHub repositories
This package is not used by any popular GitHub repositories.
ChangeLog
---------
0.3.2 GPL 3 License
0.3.1 ActivateAnything added rules ActivateUsingInstance and ChooseType for declaring instances to use
0.3.0 AnythingActivator.Instances as well as Rules. Breaking: refactored constructors & FixtureBase startup
0.2.2 FixtureBase
0.2.1.0 ActivateInstance Rule can activate a Func<Type> as well as a Type
0.2.0.0 Expose LastActivationTree and LastErrorList after a call to New()
0.1.0.2 fix non-public constructors. ChooseConstructorWith(Most|Fewest)ParametersAttribute.PreferPublic defaults to true.
0.1.0.1 ActivateAnything first release.