Я пробую к модульному тесту свои маршруты с помощью MvcContrib. TestHelper ShouldMapTo<TController>
(), дополнительный метод, но мои тесты перестал работать со следующим сообщением об ошибке:
failed: Method MvcContrib.TestHelper.RouteTestingExtensions.ShouldMapTo:
type argument 'ReviewController' violates the constraint of type parameter
'TController'.
Но ReviewController действительно встречает ограничение. Это наследовалось классу под названием SmartController, который наследовался Системе. Сеть. Mvc. Контроллер. Таким образом я в замешательстве относительно того, как разрешить эту ошибку.
Вот мой модульный тест:
[Test]
public void Should_map_review_controller_routes_correctly()
{
MvcApplication.RegisterRoutes(RouteTable.Routes);
"~/reviews"
.ShouldMapTo<ReviewController>(c => c.Index());
}
Вот объявление класса ReviewController:
public class ReviewController : SmartController<Review, ReviewForm>
{
...
}
И объявление класса SmartController:
public abstract class SmartController<TModel, TForm> : Controller
where TModel : new()
{
...
}
Только для усмешек я пытался удалить SmartController из иерархии наследования так, чтобы ReviewController наследовался непосредственно Контроллеру, но ошибка все еще брошена.
Кто-либо знает то, что я делаю неправильно?
Я использовал этот метод с MVC 2 и MvcContrib, созданными с помощью MVC 2, и все работало нормально. Я обнаружил эту проблему:
http://groups.google.com/group/mvccontrib-discuss/browse_thread/thread/356203db654fa4bd?pli=1
Используете ли вы старую сборку MvcContrib (построенную с помощью MVC1) с MVC 2 ? Если да, вам следует загрузить двоичные файлы MvcContrib или исходные коды для MVC 2.