我正在努力模拟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)