FixtureBase 0.3.0

FixtureBase cuts the cost of unit testing. Intelligent, rule-driven, autofaking fixtures get you straight to your test with all your dependencies setup and ready to go.

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)

Install-Package FixtureBase -Version 0.3.0
dotnet add package FixtureBase --version 0.3.0
<PackageReference Include="FixtureBase" Version="0.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FixtureBase --version 0.3.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

FixtureBase

FixtureBase cuts the cost of unit testing. Intelligent, rule-driven, autofaking fixtures get you straight to your test with
all your dependencies setup and ready to go.

Don't spend hours on code to mock a dozen dependencies. Write your test code, let FixtureBase create the dependencies for you. FixtureBase constructs your UnitUnderTest for full end-to-end tests of your codebase, 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.

Construction is done by

Faking is done by

For more tools focussed on cutting the cost of unit testing, see also:

FixtureBase

FixtureBase cuts the cost of unit testing. Intelligent, rule-driven, autofaking fixtures get you straight to your test with
all your dependencies setup and ready to go.

Don't spend hours on code to mock a dozen dependencies. Write your test code, let FixtureBase create the dependencies for you. FixtureBase constructs your UnitUnderTest for full end-to-end tests of your codebase, 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.

Construction is done by

Faking is done by

For more tools focussed on cutting the cost of unit testing, see also:

Release Notes

ChangeLog
     ---------
     0.3.0 AnythingActivator.Instances as well as Rules. Breaking: refactored constructors & FixtureBase startup
     0.2.2 FixtureBase
     0.2.1 ActivateInstance Rule can activate a Func<Type> as well as a Type
     0.2.0 ActivateAnything exposes 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.

Version History

Version Downloads Last updated
0.3.0 180 11/26/2018
0.2.2 91 11/23/2018