TestBase-Mvc 4.1.4.3

*TestBase* gets you off to a flying start when unit testing projects with dependencies.
TestBase-Mvc adds a rich extensible set of fluent assertions for verifying Mvc ActionResults and for easy setup of ControllerContext and HttpContext for both Mvc and WebApi
TestBase.Shoulds
-------------------
Chainable fluent assertions get you to the point concisely
ControllerUnderTest.Action()
 .ShouldbeViewResult()
 .ShouldHaveModel<TModel>()
 .ShouldEqualByValue(expected)
ControllerUnderTest.Action()
 .ShouldBeRedirectToRouteResult()
 .ShouldHaveRouteValue("expectedKey", [Optional] "expectedValue");

ShouldHaveViewDataContaining(), ShouldBeJsonResult() etc.

TestBase
----------
Controller extensions to fake the http request & context. By injecting the RegisterRoutes method of your
MvcApplication, you can use and test Controller.Url with your application's configured routes.

ControllerUnderTest
 .WithHttpContextAndRoutes(
   [Optional] Action<RouteCollection> mvcApplicationRoutesRegistration,
   [optional] string requestUrl,
   [Optional] string query = "",
   [Optional] string appVirtualPath = "/",
   [Optional] HttpApplication applicationInstance)

ApiControllerUnderTest.WithWebApiHttpContext<T>(
   HttpMethod httpMethod,
   [Optional] string requestUri,
   [Optional] string routeTemplate)

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

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
    • AspNet.Mvc or AspNetCore Contexts
    • HttpClient
    • Ado.Net
    • Streams & Logging
  • Mix & match with your favourite test runners and assertions.

TestBase.Mvc for Mvc4 and Mvc5

Use the Controller.WithHttpContextAndRoutes() extension methods to fake the
http request &amp; context, enabling you to unit test with dependecies on
Controller.Url(), Request.Cookies, Response.Cookies Request.QueryString
and more. By passing in your own MvcApplication's actual RegisterRoutes()
method , you can verify Controller.Url with your application's
actual routes.

var controllerUnderTest = new AController().WithHttpContextAndRoutes();

controllerUnderTest
    .Action("SomeController","SomeAction",other:1)
    .ShouldBeViewWithModel<AClass>("ViewName");
        .FooterLink
        .ShouldBe("/Controller/Action?other=1");

ControllerUnderTest
  .WithHttpContextAndRoutes(
    [Optional] Action<RouteCollection> mvcApplicationRoutesRegistration, 
    [optional] string requestUrl,
    [Optional] string query = "",
    [Optional] string appVirtualPath = "/",
    [Optional] HttpApplication applicationInstance)

ApiControllerUnderTest.WithWebApiHttpContext&lt;T&gt;(
    HttpMethod httpMethod, 
    [Optional] string requestUri,
    [Optional] string routeTemplate)

Chainable fluent assertions get you to the point concisely:

UnitUnderTest.Action()
  .ShouldNotBeNull()
  .ShouldEqualByValueExceptFor(new {Id=1, Descr=expected}, ignoreList )
  .Payload
    .ShouldMatchIgnoringCase("I expected this")
	.Should(someOtherPredicate);
	.Items
      .ShouldAll(predicate)
	  .ShouldContain(item)
	  .ShouldNotContain(predicate)
	  .Where(predicate)
	  .SingleOrAssertFail()

.ShouldEqualByValue().ShouldEqualByValueExceptFor(...).ShouldEqualByValueOnMembers()
  work with all kinds of object and collections, and report what differed.
string.ShouldMatch(pattern).ShouldNotMatch().ShouldBeEmpty().ShouldNotBeEmpty()
.ShouldNotBeNullOrEmptyOrWhiteSpace().ShouldEqualIgnoringCase()
.ShouldContain().ShouldStartWith().ShouldEndWith().ShouldBeContainedIn().ShouldBeOneOf().ShouldNotBeOneOf()
numeric.ShouldBeBetween().ShouldEqualWithTolerance()....GreaterThan....LessThan...GreaterOrEqualTo ...
ienumerable.ShouldAll().ShouldContain().ShouldNotContain().ShouldBeEmpty().ShouldNotBeEmpty() ...
stream.ShouldHaveSameStreamContentAs().ShouldContain()
value.ShouldBe().ShouldNotBe().ShouldBeOfType().ShouldBeAssignableTo()...

See also

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
    • AspNet.Mvc or AspNetCore Contexts
    • HttpClient
    • Ado.Net
    • Streams & Logging
  • Mix & match with your favourite test runners and assertions.

TestBase.Mvc for Mvc4 and Mvc5

Use the Controller.WithHttpContextAndRoutes() extension methods to fake the
http request &amp; context, enabling you to unit test with dependecies on
Controller.Url(), Request.Cookies, Response.Cookies Request.QueryString
and more. By passing in your own MvcApplication's actual RegisterRoutes()
method , you can verify Controller.Url with your application's
actual routes.

var controllerUnderTest = new AController().WithHttpContextAndRoutes();

controllerUnderTest
    .Action("SomeController","SomeAction",other:1)
    .ShouldBeViewWithModel<AClass>("ViewName");
        .FooterLink
        .ShouldBe("/Controller/Action?other=1");

ControllerUnderTest
  .WithHttpContextAndRoutes(
    [Optional] Action<RouteCollection> mvcApplicationRoutesRegistration, 
    [optional] string requestUrl,
    [Optional] string query = "",
    [Optional] string appVirtualPath = "/",
    [Optional] HttpApplication applicationInstance)

ApiControllerUnderTest.WithWebApiHttpContext&lt;T&gt;(
    HttpMethod httpMethod, 
    [Optional] string requestUri,
    [Optional] string routeTemplate)

Chainable fluent assertions get you to the point concisely:

UnitUnderTest.Action()
  .ShouldNotBeNull()
  .ShouldEqualByValueExceptFor(new {Id=1, Descr=expected}, ignoreList )
  .Payload
    .ShouldMatchIgnoringCase("I expected this")
	.Should(someOtherPredicate);
	.Items
      .ShouldAll(predicate)
	  .ShouldContain(item)
	  .ShouldNotContain(predicate)
	  .Where(predicate)
	  .SingleOrAssertFail()

.ShouldEqualByValue().ShouldEqualByValueExceptFor(...).ShouldEqualByValueOnMembers()
  work with all kinds of object and collections, and report what differed.
string.ShouldMatch(pattern).ShouldNotMatch().ShouldBeEmpty().ShouldNotBeEmpty()
.ShouldNotBeNullOrEmptyOrWhiteSpace().ShouldEqualIgnoringCase()
.ShouldContain().ShouldStartWith().ShouldEndWith().ShouldBeContainedIn().ShouldBeOneOf().ShouldNotBeOneOf()
numeric.ShouldBeBetween().ShouldEqualWithTolerance()....GreaterThan....LessThan...GreaterOrEqualTo ...
ienumerable.ShouldAll().ShouldContain().ShouldNotContain().ShouldBeEmpty().ShouldNotBeEmpty() ...
stream.ShouldHaveSameStreamContentAs().ShouldContain()
value.ShouldBe().ShouldNotBe().ShouldBeOfType().ShouldBeAssignableTo()...

See also

Release Notes

v4. Removed dependency on NUnit.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
4.1.4.3 198 11/20/2018
4.0.0 100 11/16/2018
3.1.0 524 7/24/2016
3.0.8.5 317 7/23/2016
3.0.8.3 338 4/14/2016
3.0.8.2 292 3/31/2016
3.0.8.1 317 3/30/2016
3.0.8 356 3/29/2016
3.0.7.6 294 3/14/2016
3.0.7.5 312 3/10/2016
3.0.7.4 343 2/11/2016
3.0.7.3 326 1/29/2016
3.0.7.2 289 1/28/2016
3.0.7.1 274 1/27/2016
3.0.7 304 1/27/2016
3.0.6.2 277 1/27/2016
3.0.6.1 296 1/26/2016
3.0.5 333 1/15/2016
3.0.4 343 1/13/2016
3.0.3 324 12/28/2015
3.0.2 1,963 12/27/2013
3.0.1.1 392 12/23/2013
3.0.1 425 11/28/2013
2.0.5 398 11/28/2013
2.0.4.1 360 11/12/2013
2.0.4 408 11/12/2013
2.0.3.1 362 11/8/2013
2.0.3 399 11/7/2013
2.0.2 380 11/7/2013
2.0.1 402 11/1/2013
1.0.4 391 10/31/2013
1.0.3 404 10/23/2013