使用MvcContrib对控制器和视图进行单元/集成测试会在运行时抛出错误

时间:2013-01-29 09:20:04

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

对于测试MVC 4 Web应用程序的世界来说还是相当新的,并且一直在尝试对测试视图和控制器进行单元化,以确定对于给定的控制器是否有动作呈现特定视图,我一直在使用MvcContrib TestHelper来尝试简单测试应用程序的过程,但到目前为止还无法通过测试。

当测试运行时,我收到错误预期视图名称为'index'实际为''

目前我正在运行此测试方法:

[TestMethod]
    public void AMAC_Controller_Renders_Index_View()
    {
        var builder = new TestControllerBuilder();
        var controller = new AMACController();
        builder.InitializeController(controller);

        var result = controller.Index();

        result.AssertViewRendered().ForView("index").WithViewData<AMACEnquiryModel>();
    }

控制器和模型目前都在被应用程序使用,想知道你是否可以提供关于如何使这个测试工作的任何建议,我之前已经修改过这样做我得到另一个错误,路由名已经存在在集合中。

1 个答案:

答案 0 :(得分:0)

从MvcContrib项目的一个贡献者那里得到一些建议之后,测试没有通过的原因是因为我在将.ForView(“index”)之前将错误的数据传递给.ForView()控制器实际上传递了View(模型),因此.ForView()的值实际上是一个空字符串,因此断言现在看起来像这样:

result.AssertViewRendered().ForView("").WithViewData<AMACEnquiryModel>();