路由的单元测试应该映射到控制器失败,而类似的没有

时间:2013-01-31 09:17:04

标签: c# unit-testing asp.net-mvc-4 mvccontrib-testhelper

与之前可以在此处找到的问题相关:

tests failing when "Run All Test in Solution" is used

测试方法:

[TestMethod]
public void AMAC_Route_Maps_to_AMACController()
{
    "~/amac/".ShouldMapTo<AMACController>(action => action.Index());

}

路线:

routes.MapRoute(
            name: "AMAC",
            url: "amac/",
            defaults: new { controller = "AMAC", action = "Index" }
        );

返回错误:

测试方法MBS.Exec.Enquiry.MVC.Tests.AMACControllerTest.AMAC_Route_Maps_to_AMACController抛出异常:MvcContrib.TestHelper.AssertionException:URL与任何路径都不匹配

只有当我在解决方案中运行所有测试时才会抛出此错误,当我将测试与其传递的类隔离开来时。

作为一个例子,我有一个实际通过的类似控制器的测试方法,下面是测试方法的代码及其路径:

测试方法

    [TestMethod]
    public void HVM_Route_Maps_to_HVMController()
    {
        "~/hvm/".ShouldMapTo<HVMController>(action => action.Index());
    }

路线:

routes.MapRoute(
            name: "HVM",
            url: "hvm/",
            defaults: new { controller = "HVM", action = "Index" }
        );

此测试不会产生错误。

1 个答案:

答案 0 :(得分:0)

当我重构测试以将路由注册添加到[AssemblyInitialize]方法时,我忘记从其中一个单元测试类中删除[TestCleanup]方法,导致路由重新注册。

删除后,所有测试都通过了。