簡體   English   中英

MVC ViewResult.VIewName即使在設置之后也為null

[英]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屬性。 我嘗試了同樣但它不會工作。

謝謝

Controller.View()文檔說明:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM