SparkyTestHelpers.AspNetMvc
1.6.8
dotnet add package SparkyTestHelpers.AspNetMvc --version 1.6.8
NuGet\Install-Package SparkyTestHelpers.AspNetMvc -Version 1.6.8
<PackageReference Include="SparkyTestHelpers.AspNetMvc" Version="1.6.8" />
paket add SparkyTestHelpers.AspNetMvc --version 1.6.8
#r "nuget: SparkyTestHelpers.AspNetMvc, 1.6.8"
// Install SparkyTestHelpers.AspNetMvc as a Cake Addin #addin nuget:?package=SparkyTestHelpers.AspNetMvc&version=1.6.8 // Install SparkyTestHelpers.AspNetMvc as a Cake Tool #tool nuget:?package=SparkyTestHelpers.AspNetMvc&version=1.6.8
see also:
- SparkyTestHelpers.AspNetMvc.Core - the .NET Core version of this package
- the rest of the "Sparky suite" of .NET utilities and test helpers
Controller Testers
ControllerTester<T> and ApiControllerTester<T> test action methods of controllers that inherit from System.Web.Mvc.Controller and System.Web.Http.ApiController respectively.
The general syntax is:
tester<br/> .Action(action selection expression)<br/> .When(optional code to "arrange" test conditions)<br/> .Expecting...(optional code to set up assert expectations)<br/> .Test...()
Examples
//ControllerTester:
moviesControllerTester
.Action(x => x.Index)
.TestView();
moviesControllerTester
.Action(x => () => x.Details(3))
.ExpectingViewName("Details")
.ExpectingModel<Movle>(movie => Assert.AreEqual("Office Space", movie.Title))
.TestView();
moviesControllerTester
.Action(x => x.Edit(testInvalidModel))
.WhenModelStateIsValidEquals(false)
.TestRedirectToAction("Errors");
moviesControllerTester
.Action(x => () => x.Edit(testValidModel))
.WhenModelStateIsValidEquals(true)
.ExpectingViewName("UpdateSuccessful")
.TestRedirectToRoute("Home/UpdateSuccessful");
//ApiControllerTester:
moviesApiControllerTester
.Action<IEnumerable<Movie>>(x => x.GetAllMovies)
.Test(movies => Assert.AreEqual(100, movies.Count());
moviesApiControllerTester
.Action(x => () => x.Get)
.WhenRequestHasQueryStringParameters(new QueryStringParameter("id", 3))
.TestOkNegotiatedContentResult<Movie>(movie => Assert.AreEqual("Office Space", movie.Title));
moviesApiControllerTester
.Action(x => () => x.Update(updateModel))
.WhenModelStateIsValidEquals(false)
.TestBadRequestResult();
moviesApiControllerTester
.Action(x => () => x.Update(updateModel))
.WhenModelStateIsValidEquals(true)
.TestOkResult();
RouteTester
RouteTester and RoutingAsserter provide methods to assert that a given relative URL maps to the expected RouteData.Values. The RoutingAsserter.AssertMapTo overloads provide multiple ways to specify the expected values...
Constructors
- public RouteTester(Action<RouteCollection> routeRegistrationMethod)
- public RouteTester(AreaRegistration areaRegistration)
using SparkyTestHelpers.AspNetMvc.Routing;
. . .
var routeTester = new RouteTester(RouteConfig.RegisterRoutes);
var areaRouteTester = new RouteTester(new FooAreaRegistration());
methods
- .ForUrl(string relativeUrl) - creates a new RoutingAsserter instance.
RoutingAsserter
methods
- AssertMapTo(IDictionary<string, object> expectedValues)
- AssertMapTo(object routeValues)
- AssertMapTo(string controller, string action, (object id)) - id defaults to null
- AssertMapTo<TController>(Expression<Func<TController, Func<ActionResult>>> actionExpression)
- AssertRedirectTo(string expectedUrl, (HttpStatusCode *expectedStatusCode)) - expectedStatusCode defaults to HttpStatusCode.Redirect (302)
examples
routeTester.ForUrl("Default.aspx")
.AssertRedirectTo("Home/LegacyRedirect");
// alternate syntaxes for asserting Home/Index routing:
routeTester.ForUrl("Home/Index")
.AssertMapTo(new Dictionary<string, object>
{ { "controller", "Home" }, { "action", "Index" }, { "id", null } );
routeTester.ForUrl("Home/Index")
.AssertMapTo(new {controller = "Home", action = "Index"});
routeTester.ForUrl("Home/Index")
.AssertMapTo("Home", "Index");
routeTester.ForUrl("Home/Index")
.AssertMapTo<HomeController>(x => x.Index);
// alternate syntaxes for asserting Order/Details/3 routing:
routeTester.ForUrl("Order/Details/3")
.AssertMapTo(new Dictionary<string, object>
{ { "controller", "Order" }, { "action", "Details" }, { "id", 3 } );
routeTester.ForUrl("Order/Details/3")
.AssertMapTo(new {controller = "Order", action = "Details", id = 3 });
routeTester.ForUrl("Order/Details/3")
.AssertMapTo("Order", "Details", 3);
routeTester.ForUrl("Order/Details/3")
.AssertMapTo<OrderController>(x => () => x.Details(3));
Complete API documentation:
https://github.com/BrianSchroer/sparky-test-helpers/blob/master/SparkyTestHelpers.AspNetMvc/api.md
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
- Microsoft.AspNet.Mvc (>= 5.2.4)
- Microsoft.AspNet.WebApi.Core (>= 5.2.6)
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 |
---|---|---|
1.6.8 | 1,818 | 3/5/2021 |
1.6.7 | 390 | 3/5/2021 |
1.6.6 | 393 | 2/28/2021 |
1.6.4 | 415 | 2/24/2021 |
1.6.3 | 363 | 2/23/2021 |
1.6.2 | 435 | 2/23/2021 |
1.6.1 | 355 | 2/22/2021 |
1.6.0 | 355 | 2/22/2021 |
1.5.0 | 357 | 2/20/2021 |
1.4.0 | 417 | 1/7/2021 |
1.3.1 | 1,356 | 5/18/2019 |
1.3.0 | 1,097 | 3/31/2018 |
1.2.0 | 950 | 3/28/2018 |
1.1.0 | 856 | 3/26/2018 |
1.0.1 | 978 | 3/22/2018 |
1.0.0 | 1,010 | 3/22/2018 |
v1.6.0: added support for testing actions that return any response type