와 비웃음 FormsIdentity.Ticket.UserData 내가 다음은 작동하지 않습니다 FormsIdentity.Ticket.UserDataMOQ
의 반환 값을 조롱하려고하지만 내가 무엇의 아이디어를 줄 것이다 단위 테스트의 일환으로
이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.Ti의 반환 값 가짜 cket.UserData. 그러나 첫 번째 섹션에서 코드를 실행하면 FormsIdentity를 조롱 할 때 오류가 발생합니다. 이 오류는 모의 형식이 인터페이스, 추상 클래스 또는 비 - 봉합 클래스 여야한다고 말합니다.
FormsIdentity (FormsIdentity는 IIdentity의 구현 임) 대신 IIdentity를 사용하려고했지만 IIdentity에는 .Ticket.UserData가 없습니다.
그래서이 테스트를 작성하여 FormsIdentity.Ticket.UserData에서 값을 얻을 수 있습니까?
내가 너무 많은 일을했다 테스트하려고했던 방법을 밝혀하는 데 도움이됩니다. 그것은 테스트하기 어려운 단일 책임 패턴을 위반했습니다. 이후 리팩터링했습니다. 원래 질문에 대해서는 FormsIdentity.Ticket.UserData를 모방 할 방법이 없습니다. 봉인 된 클래스의 일부이기 때문에 – codette