作为单元测试的一部分,我试图模拟FormsIdentity.Ticket.UserData的返回值。
以下方法不起作用,但它应该能够说明我的意图:
以下方法不起作用,但它应该能够说明我的意图:
var principal = Mock<IPrincipal>();
var formsIdentity = Mock<FormsIdentity>();
formsIdentity.Setup(a => a.Ticket.UserData).Returns("aaa | bbb | ccc");
principal.Setup(b => b.Identity).Returns(formsIdentity.Object);
我正在尝试测试的代码大致如下:
FormsIdentity fIdentity = HttpContext.Current.User.Identity as FormsIdentity;
string userData = fIdentity.Ticket.UserData;
我在单元测试中想要假造FormsIdentity.Ticket.UserData的返回值。但是当我运行第一段代码时,尝试模拟FormsIdentity时出现错误。错误提示必须模拟接口、抽象类或非密封类。
我尝试使用IIdentity代替FormsIdentity(FormsIdentity是IIdentity的实现),但是IIdentity没有.Ticket.UserData属性。
那么我该如何编写这个测试,以便从FormsIdentity.Ticket.UserData获取一个值呢?