2009-11-22 67 views
3

我似乎无法返回result.ViewName用于Nunit测试,因为它总是返回string.empty。我已经明确地在控制器中设置了视图的名称,并希望测试能够提取它。如果我明确地设置它,似乎我应该得到Viewname。任何人有任何想法?result.viewname始终是string.empty

public class HomeController : Controller 
{ 

    public ActionResult Index() 
    { 
     return View("Index"); 
    } 
} 

我的测试看起来像这样

[Test] 
    public void TestIndexView() 
    { 
     var controller = new HomeController(); 
     var result = controller.Index() as ViewResult; 
     Assert.AreEqual("Index", result.ViewName); 
    } 
+1

您是否尝试清洁和重建解决方案?它应该没有问题。 – LukLed 2009-11-22 19:11:59

+0

看起来像我有一个与mvc的参考问题! Duh – Rippo 2009-11-22 19:20:46

+0

发表评论为回复,这样我就可以接受它,谢谢Luk – Rippo 2009-11-22 19:21:24

回答

2

您是否尝试清洁和重建解决方案?它应该没有问题。

0

你需要return new View("Index");。如果这是C的原因,因为你创建View的方式在Index()它只是存储在堆栈中,并在功能结束时超出范围(并因此被收集)。这会导致C崩溃,但C#在这方面看起来有点聪明。

+0

真的吗?根据http://www.asp.net/learn/mvc/tutorial-07-cs.aspx它没有提到“新”... – Rippo 2009-11-22 18:55:41

+1

View()函数创建ViewResult。 – LukLed 2009-11-22 18:56:45

+0

啊,哎呀。我以为视图是一个类,而不是一个函数。失败。 – Donnie 2009-11-22 19:04:02