Я пытаюсь издеваться System.Security.Principal.IIdentity
.Тем не менее, я специально хочу заменить конкретный Claim
во время теста.Проблема, с которой я столкнулся, заключается в том, что, хотя я могу смоделировать и заменить элементы интерфейса, у меня нет доступа к классу, пока он не будет решен и приведен внутри метода.
Вот мой конструктор Controller:
public MyController(IIdentity identity)
{
_userIdentity = identity as ClaimsIdentity;
А вот мой код, в котором я пытаюсь смоделировать утверждения:
var mockClaim = new Claim("test", "test");
IIdentity identity = Substitute.For<IIdentity>();
((ClaimsIdentity)identity).Claims.Returns(new List<Claim>() { mockClaim });
Очевидно, это не работает, потому что identity
на самом деле неИдентичность в этом случае.Хотя я задаю конкретный вопрос, относящийся к этой проблеме, мой более общий вопрос: существуют ли какие-либо методы для насмешки конкретного экземпляра класса интерфейса внутри макета интерфейса?
(я понимаю, что могу просто обернутьвсе это в моем собственном интерфейсе и классе оболочки - но это похоже на излишество).