我正在与MvcContrib HelpTester一起使用MVC2。
我在测试区域中的控制器时遇到了问题。
下面是我的Test类:
[TestFixture]
public class RouteTests
{
[TestFixtureSetUp]
public void Setup()
{
RouteTable.Routes.Clear();
MvcApplication.RegisterRoutes(RouteTable.Routes);
}
[Test]
public void RootMatchesHome()
{
"~/".ShouldMapTo<TradersSite.Controllers.HomeController>(x => x.Index());
}
[Test]
public void AdminProductShouldMapToIndex()
{
"~/Admin/Produit/".ShouldMapTo<TradersSite.Areas.Admin.Controllers.ProductController>(x => x.Index());
}以下是我的ProductController在管理区域中的操作索引:
public ActionResult Index(int? page)
{
int pageSize = 10;
int startIndex = page.GetValueOrDefault() * pageSize;
var products = _productRepository.GetAllProducts()
.Skip(startIndex)
.Take(pageSize);
return View("Index", products);
}下面是我的AdminAreaRefistration中的路由图:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}最后,这是我从MbUnit得到的消息:
CBL.Traders.ControllerTests.RouteTests.AdminProductShouldMapToIndex() -setup success failure RouteTests.AdminProductShouldMapToIndex TestCase 'RouteTests.AdminProductShouldMapToIndex‘失败:预期的产品但为管理员MvcContrib.TestHelper.AssertionException消息:预期的产品但为管理员来源: MvcContrib.TestHelper StackTrace: RouteTests.cs(44,0):at fixture
发布于 2011-02-08 01:58:49
您的区域路由未在设置中注册。因为您只是调用RegisterRoutes,它(默认情况下)不注册区域,所以它被遗漏了。
您可以想出一种直接调用AreaRegistration.RegisterAllAreas()的方法(通常在应用程序启动时调用),也可以手动注册要测试的每个区域。在您的情况下,以下方法将起作用:
public void Setup()
{
RouteTable.Routes.Clear();
var adminArea = new AdminAreaRegistration();
var context = new AreaRegistrationContext("Default", RouteTable.Routes);
adminArea.RegisterArea(context);
MvcApplication.RegisterRoutes(RouteTable.Routes);
}https://stackoverflow.com/questions/2759345
复制相似问题