Need help with error using MvcContrib.TestHelper's ShouldMapTo() generic extension method

1.5k views Asked by At

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?

1

There are 1 answers

2
LukLed On BEST ANSWER

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.