我有可以从多种客户端类型(例如 WinForms、Console、ASP.NET 等)调用的库代码,并且需要确定当前的主体。为此,我对 Thread.CurrentPrincipal 和 Environment.UserName 执行两步检查,如下所示:
var currentUser = !System.Threading.Thread.CurrentPrincipal.Identity.IsAuthenticated ? null : System.Threading.Thread.CurrentPrincipal.Identity.Name;
if (string.IsNullOrWhiteSpace(currentUser))
{
currentUser = Environment.UserName;
}
在控制台应用程序 Thread.CurrentPrincipal.Identity.IsAuthenticated 中始终为 false 但是在 MSTest 中它始终具有有效的经过身份验证的用户。
无论如何将单元测试中 Thread.CurrentPrincipal 的值重置为未经身份验证以模仿控制台应用程序?