[英]MVC ViewResult.VIewName null even after setting it
我正在嘗試為MVC應用程序編寫單元測試。 我試圖測試我的控制器是否返回正確的視圖名稱。
這是我正在測試的控制器動作:
public IActionResult Index(string reportcode)
{
if(string.IsNullOrEmpty(reportcode))
ReportCode = reportcode;
ViewBag.GridSource = GetReportData(reportcode);
return View("Index");
}
這是我的Unittest:
[Test]
public void Index_ReturnCorrectView()
{
var controller = new HomeController();
var result = controller.Index("COMD") as ViewResult;
Assert.AreEqual("Index", result.ViewName);
}
我從單元測試中獲得的錯誤預計為“索引”,但是為空。 我做了很多搜索,大多數答案都說在返回視圖后聲明ViewName屬性。 我嘗試了同樣但它不會工作。
謝謝
View類的此方法重載返回具有空ViewName屬性的ViewResult對象 。 如果要為控制器操作編寫單元測試,請考慮不采用字符串視圖名稱的單元測試的空ViewName屬性。
在運行時,如果ViewName屬性為空,則使用當前操作名稱代替ViewName屬性。
因此,當期望與當前操作具有相同名稱的視圖時,我們可以測試它是空字符串。
或者,Controller.View(ViewName,Model)方法將設置ViewName。
我的控制器方法
public ActionResult Index()
{
return View("Index");
}
測試方法
[TestMethod]
public void Index()
{
// Arrange
HomeController controller = new HomeController();
// Act
ViewResult result = controller.Index() as ViewResult;
// Assert
Assert.IsTrue(result.ViewName == "Index");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.