В рамках модульного теста я пытаюсь смоделировать возвращаемое значение 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?