我试图提供一个模拟的,这将有助于我的测试:MOQ和“为”关键字
ClaimsPrincipal princple = Thread.CurrentPrincipal as ClaimsPrincipal;
从我可以告诉
然而,“为”关键字返回空,即使我能看到在调试器Thread.CurrentPrincipal是模拟。
为了测试我整理了这篇简短的演示理论:
void Main()
{
var userMock = new Mock<IUser>();
userMock.Setup(w => w.UserId).Returns(1);
var user = userMock.Object as User;
user.Dump(); // null
}
public interface IUser
{
int UserId { get; set; }
}
public class User : IUser
{
public int UserId { get; set; }
}
我如何提供MOQ对在后台使用的关键词代码?
从我的理解或许我需要什么,以提供代理投退的方法吗?
我有点意识到,这是不可能的,但不知道是什么人的方法是解决这一点。
我仍然认为它更好地依赖于你的代码中的IUser,但是解决方案是interesing - 用于将接口实现添加到生成的代理。我没有想到嘲讽类,然后添加接口模拟它 –
是的,我同意,这取决于IUSER是在这种情况下一个更好的主意,但对于“为ClaimsPrinciple”这是“只是OK”之前,我做多一些good'ol在后台重构。 :-) –