views:

238

answers:

1

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?

A: 

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.

LukLed
Thanks LukLed. That did the trick. I had to update my Rhino.Mocks assembly to work with the new MvcContrib release, but with that in place my tests pass now, so I'm good to go. I really appreciate it.
Brent
@Brent: Nice to hear, good luck:)
LukLed