簡體   English   中英

單元測試 ASP.NET 核心 3.1 MVC controller - 值不能是 null。 (參數“提供者”)

[英]Unit testing ASP.NET Core 3.1 MVC controller - value cannot be null. (Parameter 'provider')

在來自 .NET 背景之后,我最近開始使用 .NET Core 3.1,只是想在新框架中對 MVC controller 進行單元測試。

在 .NET 創建一個 MVC 網站,用於提供添加單元測試項目的選項,而 Core 沒有; 所以我遵循了一些指南,並將這個簡單的測試放在了 MSTest 中,用於HomeController索引視圖。

HomeController.cs:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return this.View();
    }
}

HomeControllerTests.cs:

[TestMethod]
public void WhenIndexIsExecutedAsyncThenContentShouldBeReturned()
{
    // arrange
    var httpContext = new DefaultHttpContext();
    var controller = new HomeController()
        {
            ControllerContext = new ControllerContext
            {
                HttpContext = httpContext
            }
        };

    var actionContext = new ActionContext
        {
            HttpContext = httpContext
        };

    // act
    var result = controller.Index().ExecuteResultAsync(actionContext);

    // assert
    Assert.IsNotNull(result);
    Assert.IsNull(result.Exception);
}

我收到一個錯誤:

值不能是 null。 (參數“提供者”)

而且我不知道是什么導致了錯誤。

為了我試圖實現的目標,即返回帶有某些內容的視圖的簡單測試(后者屬於集成測試),此代碼足以滿足第一次測試。 我的實現在第一次嘗試時過於復雜。

    [TestMethod]
    public void WhenIndexIsExecutedAsyncThenViewShouldNotBeNull()
    {
        // arrange
        var controller = new HomeController();

        // act
        var result = controller.Index() as ViewResult;

        // assert
        Assert.IsNotNull(result);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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