2009-11-22 21 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