2011-02-14 60 views
1

我正在執行單元測試並檢查我的控制器操作是否返回正確的視圖,但由於某種原因它總是返回空字符串。ViewName返回爲空

[When(@"when I go to the search page")] 
     public void WhenTheUserGoesToTheSearchScreen() 
     { 
      _controller = new HomeController(); 
      _result = _controller.Search(); 
     } 

     [Then(@"the search view should be displayed")] 
     public void ThenTheSearchViewShouldBeDisplayed() 
     { 
      Assert.AreEqual("Search",(_result as ViewResult).ViewName); // ViewName is empty! 
     } 

回答

6

ViewName屬性將始終是空的,除非你通過視圖的字符串名稱時,其從控制器動作返回,也就是說:

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

如果你只是回到View()然後VIEWNAME將是一個空字符串。這很煩人(特別是在使用MVContrib時),但它就是這樣。

+2

這實際上是一件好事。一個空的視圖名稱意味着與被調用的動作相關聯的默認視圖。如果這個名字是爲默認視圖填寫的,那麼就很難做出區分。 – 2011-02-14 19:13:23