I'm trying to unit test my routes using the MvcContrib.TestHelper ShouldMapTo<TController>
() extension method, but my tests fail with the following error message:
failed: Method MvcContrib.TestHelper.RouteTestingExtensions.ShouldMapTo:
type argument 'ReviewController' violates the constraint of type parameter
'TController'.
But ReviewController does meet the constraint. It inherits from a class called SmartController, which inherits from System.Web.Mvc.Controller. Thus I am at a loss as to how to resolve this error.
Here is my unit test:
[Test]
public void Should_map_review_controller_routes_correctly()
{
MvcApplication.RegisterRoutes(RouteTable.Routes);
"~/reviews"
.ShouldMapTo<ReviewController>(c => c.Index());
}
Here is the declaration of the ReviewController class:
public class ReviewController : SmartController<Review, ReviewForm>
{
...
}
And the declaration of the SmartController class:
public abstract class SmartController<TModel, TForm> : Controller
where TModel : new()
{
...
}
Just for grins I tried removing SmartController from the inheritance hierarchy so that ReviewController inherits directly from Controller, but the error is still thrown.
Does anyone know what I'm doing wrong?
I used this method with MVC 2 and MvcContrib built with MVC 2 and everything worked fine. I found this problem:
http://groups.google.com/group/mvccontrib-discuss/browse_thread/thread/356203db654fa4bd?pli=1
Are you using old MvcContrib assembly (built with MVC1) with MVC 2? If yes, you should download MvcContrib binaries or sources for MVC 2.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With