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