小编Edw*_*eau的帖子

如何为单元测试创​​建HttpContext?

我正在努力模拟HttpContext我的单元测试所需的.

我用一个SessionManager接口从我的Mvc控制器中抽象出对会话的控制,并用一个叫做的类来实现它CookieSessionManager.(早期发展阶段).

CookieSessionManager使用HttpContext注入的singleton HttpContextAccessor(在Startup.cs ConfigureServices中).

我正在使用在Startup.cs中设置的Cookie身份验证app.UseCookieAuthentication.

在调试模式下手动测试可以按预期工作

MSUnit我为我AccountController班级编写的测试工作是MockSessionManager注入一个类.

我遇到的真正问题是我为CookieSessionManager班级编写的单元测试.我试图设置HttpContext如下所示;

[TestClass]
public class CookieSessionManagerTest
{
    private IHttpContextAccessor contextAccessor;
    private HttpContext context;
    private SessionManager sessionManager;

    [TestInitialize]
    public void Setup_CookieSessionManagerTest()
    {
        context = new DefaultHttpContext();

        contextAccessor = new HttpContextAccessor();

        contextAccessor.HttpContext = context;

        sessionManager = new CookieSessionManager(contextAccessor);
    }
Run Code Online (Sandbox Code Playgroud)

错误

但调用sessionManager.Login(CreateValidApplicationUser());似乎没有设置IsAuthenticated标志,测试CookieSessionManager_Login_ValidUser_Authenticated_isTrue失败.

[TestMethod]
public void CookieSessionManager_Login_ValidUser_Authenticated_isTrue()
{ …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc unit-testing asp.net-core

3
推荐指数
2
解决办法
4962
查看次数

标签 统计

asp.net-core ×1

asp.net-mvc ×1

c# ×1

unit-testing ×1