【发布时间】:2016-04-20 06:19:00
【问题描述】:
我无法在下面的代码行中找到模拟。
ClaimsPrincipalFactory userClaimsPrincipal = new UserClaimsPrincipalFactory();
System.Security.Claims.ClaimsIdentity claimIdentity = userClaimsPrincipal.GetClaimsPrincipal().Identity as System.Security.Claims.ClaimsIdentity;
当我尝试模拟时,我得到了错误
Microsoft.Owin.Host.SystemWeb.dll 中出现“System.NullReferenceException”类型的异常,但未在用户代码中处理
在下面的代码中。
public class UserClaimsPrincipalFactory : ClaimsPrincipalFactory
{
protected override ClaimsPrincipal OnGetClaimsPrincipal()
{
return HttpContext.Current.GetOwinContext().Authentication.User;
}
}
我试过的模拟
Mock<UserClaimsPrincipalFactory> mockUserClaimsPrincipal = new Mock<UserClaimsPrincipalFactory>();
mockUserClaimsPrincipal
.Setup(ucp => ucp.GetClaimsPrincipal().Identity).Returns("Need to set");
任何人都可以帮助我。提前致谢。
【问题讨论】:
-
ClaimsPrincipalFactory是自定义类吗?如果可以,您可以包含该类的定义。 -
你真正想测试什么?
claimIdentity是否正在生成以成为更大测试的一部分? -
该异常与
HttpContext的紧密耦合有关
标签: c# unit-testing mocking moq claims-based-identity