TestBase – Rich, fluent assertions and tools for testing with heavyweight dependencies: AspNetCore, AdoNet, HttpClient, AspNet.Mvc, Streams, Logging NuGet Package

*TestBase* gives you a flying start with
- fluent assertions that are easy to extend
- sharp error messages
- tools to help you test with “heavyweight” dependencies on
- AspNetCore.Mvc, AspNet.Mvc or WebApi Contexts
- HttpClient
- Ado.Net
- Streams & Logging

Chainable fluent assertions get you to the point concisely:
```
ControllerUnderTest.Action()
.ShouldbeViewResult()
.ShouldHaveModel<TModel>()
.ShouldEqualByValue(expected, exceptForTheseFields);
.Reference
.ShouldMatchIgnoringCase("I expected this");

ControllerUnderTest.Action()
.ShouldBeRedirectToRouteResult()
.ShouldHaveRouteValue(""expectedKey"", [Optional] ""expectedValue"");

ShouldHaveViewDataContaining(), ShouldBeJsonResult() etc.
```

Quickly test AspNetCore controllers with zero setup using `controllerUnderTest.WithControllerContext()` :

```
[TestFixture]
public class WhenTestingControllersUsingFakeControllerContext
{
[Test]
public void ControllerUrlAndOtherPropertiesShouldWorkAsExpected__GivenControllerContext()
{
var uut = new FakeController().WithControllerContext();
uut.Url.Action(""a"", ""b"").ShouldEqual(""/b/a"");
uut.ControllerContext.ShouldNotBeNull();
uut.HttpContext.ShouldBe(uut.ControllerContext.HttpContext);
uut.Request.ShouldNotBeNull();
uut.ViewData.ShouldNotBeNull();
uut.TempData.ShouldNotBeNull();
uut.MyAction(param)
.ShouldBeViewResult()
.ShouldHaveModel<YouSaidViewModel>()
.YouSaid.ShouldBe(param);
}

[Test]
public void ShouldBeAbleToUseServicesConfiguredInStartupInTests()
{
var moreServicesFromDI=TestServerBuilder.RunningServerUsingStartup<TStartup>().Host.ServiceProvider;

var controllerUnderTest =
new AController()
.WithControllerContext(virtualPathTemplate:""/{Action}/Before/{Controller}"");

var result= controllerUnderTest
.Action(""SomeController"",""SomeAction"")
.ShouldBeViewWithModel<AClass>(""ViewName"");
.FooterLink
.ShouldBe(""/SomeAction/Before/SomeController"");
}
}
```

..

Or test against complex application dependencies using `HostedMvcTestFixtureBase` and specify your `Startup` class:

```
[TestFixture]
public class WhenTestingControllersUsingAspNetCoreTestTestServer : HostedMvcTestFixtureBase
{

[TestCase(""/dummy/action?id={id}"")]
public async Task Get_Should_ReturnActionResult(string url)
{
var id=Guid.NewGuid();
var httpClient=GivenClientForRunningServer<Startup>();
GivenRequestHeaders(httpClient, ""CustomHeader"", ""HeaderValue1"");

var result= await httpClient.GetAsync(url.Formatz(new {id}));

result
.ShouldBe_200Ok()
.Content.ReadAsStringAsync().Result
.ShouldBe(""Content"");
}

[TestCase(""/dummy"")]
public async Task Put_Should_ReturnA(string url)
{
var something= new Fixture().Create<Something>();
var jsonBody= new StringContent(something.ToJSon(), Encoding.UTF8, ""application/json"");
var httpClient=GivenClientForRunningServer<Startup>();
GivenRequestHeaders(httpClient, ""CustomHeader"", ""HeaderValue1"");

var result = await httpClient.PutAsync(url, jsonBody);

result.ShouldBe_202Accepted();
DummyController.Putted.ShouldEqualByValue( something );
}
}
```

See also
- TestBase
- TestBase.Mvc for Mvc4 and Mvc 5
- TestBase.HttpClient.Fake
- TestBase.AdoNet
- Serilog.Sinks.ListOfString
- Extensions.Logging.ListOfString.




Got any TestBase – Rich, fluent assertions and tools for testing with heavyweight dependencies: AspNetCore, AdoNet, HttpClient, AspNet.Mvc, Streams, Logging Question?





Info

Version: 4.1.2.3
Author(s): Chris F Carroll
Last Update: Sunday, May 27, 2018
.NET Fiddle: Create the first Fiddle
Project Url: http://github.com/chrisfcarroll/TestBase
NuGet Url: https://www.nuget.org/packages/TestBase.AspNetCore.Mvc


Install
Install-Package TestBase.AspNetCore.Mvc
dotnet add package TestBase.AspNetCore.Mvc
paket add TestBase.AspNetCore.Mvc
TestBase.AspNetCore.Mvc Download (Unzip the "nupkg" after downloading)



Tags



STATS

must-have-score

.5

avg-downloads-per-day

1

days-since-last-release

2133