今天早些时候我问了这个question .
因此,由于 moq 从接口(interface)创建了它自己的类,我无法将其转换为不同的类。
所以我想知道如果我创建一个 ICustomPrincipal 并尝试转换为它会怎样。
这是我的模拟的样子:
var MockHttpContext = new Mock<HttpContextBase>();
var MockPrincipal = new Mock<ICustomPrincipal>();
MockHttpContext.SetupGet(h => h.User).Returns(MockPrincipal.Object);
在我尝试测试的方法中,以下代码给出了错误(再次):
var user = (ICustomPrincipal)httpContext.User;
错误如下:
Unable to cast object of type 'IPrincipalProxy4081807111564298854aabfc890edcc8'
to type 'MyProject.Web.ICustomPrincipal'.
我想我仍然需要一些接口(interface)和最小起订量的练习,但我不应该能够将最小起订量创建的类转换回 ICustomPrincipal 吗?我知道 httpContext.User 返回一个 IPrincipal,所以那里可能丢失了一些东西?
好吧,如果有人能帮助我,我将不胜感激。
泡菜
编辑:
根据要求,我正在测试的方法的完整代码。它还没有完成,但这是我到目前为止所拥有的:
public bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
{
throw new ArgumentNullException("httpContext");
}
var user = (ICustomPrincipal)httpContext.User;
if (!user.Identity.IsAuthenticated)
{
return false;
}
return true;
}
编辑2:
似乎如果我使用 Thread.CurrentPrincipal 而不是 HttpContext.current.user 我可以毫无问题地转换它。现在阅读两者之间的区别。
最佳答案
关于c# - 最小起订量:无法转换到界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2776949/