簡體   English   中英

在.NET Core中模擬HttpContext.Session

[英]Mocking HttpContext.Session in .NET Core

我在Moq中使用xUnit為我的應用程序編寫單元測試。 但是,我很難模擬該會話。

被測系統是控制器動作,被測方法使用TempData["UserMessage"] ,由於未初始化Session,該參數始終為null。

這是我嘗試模擬依賴項的打印屏幕。 在此處輸入圖片說明

在第65行出現了錯誤,並且緊隨其后 在此處輸入圖片說明

一般的經驗法則是避免使用“胖控制器”。 我的控制器實際上具有針對相應服務執行所需的模型或參數。 理想情況下,您的控制器動作是一個具有許多描述端點的屬性的單個調用,請考慮以下事項:

public class MyThinController : Controller
{
    [
        HttpGet,
        Route("api/[controller]/foos/{bar}"),
        Authorize(Policy = nameof(Policies.StackoverflowOp))
    ]
    public Task<IActionResult> GetFoo([FromRoute] Bar bar,
                                      [FromServices] IExampleService service)
        => service.GetAsync(bar);
}

然后,您唯一需要擔心的是,在給定bar的情況下, IExampleService的實現確實會正確獲取Foo

但是,如果您完全不願意以正確的方式進行操作,那么總會有一種錯誤的方式來進行操作。 您實際上正在尋找的是Moq就緒的ActionContext.HttpContext

暫無
暫無

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

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