5

我有以下单元测试:

    [TestMethod]
    public void Add_Returns_Edit_View()
    {
        // Act
        ActionResult result = _controller.Add();

        // Verify
        result.AssertViewRendered().ForView("Edit");
    }

这应该会通过,因为 Add 操作正在返回 Edit 视图。但是,此断言失败,并出现以下异常

MvcContrib.TestHelper.ActionResultAssertionException: Expected view name 'Edit', actual was '~/Views/JobSearch/Edit.cshtml'

为什么视图名称作为完整路径名称返回?这可能是因为我使用了 T4MVC,如果是这样,我怎样才能让它通过?


编辑添加视图如下所示:

    public virtual ActionResult Add()
    {
        return View(MVC.JobSearch.Views.Edit, new JobSearch());
    }
4

2 回答 2

3

您可以像这样针对 T4MVC 值进行测试:

result.AssertViewRendered().ForView(MVC.JobSearch.Views.Edit);

我认为这是更清洁的解决方案......如果你最好让我知道:)

于 2011-04-05T01:15:22.090 回答
1

好吧,我想我只是没有调查 T4MVC 代码来更好地了解正在发生的事情。似乎MVC.JobSearch.Views.Edit等于"~/Views/JobSearch/Edit.cshtml",因此针对方法调用.ForView()中描述的相同视图名称进行测试也是如此。View()

谢谢您的帮助。

于 2011-04-05T00:58:16.443 回答