Я использую Moq и понимаю, что в этой ситуации я получил исключение Ambiguous match found
, в котором мне нужна помощь:
Вот мои модели:
public class User
{
}
public class CustomUser
{
}
Некоторые классы:
public class BaseClass
{
public virtual User User { get; set; }
}
public class Father : BaseClass
{
public virtual new CustomUser User { get; set; }
}
public class Child : Father
{
}
И наконец:
void Main()
{
var user = new Mock<CustomUser>();
var child = new Mock<Child>();
child.SetupGet(x=>x.User).Returns (user.Object); // Ambiguous match found.
}
Обновление:
Почему я использую это ?!Поскольку я кодирую MVC-WebAPI
, и у меня есть BaseController
, который наследует ApiController
.
OK, в ApiController
у нас есть свойство IPrincipal User
, которое я переопределил с помощью своей реализации ICustomPrinciple
( эта ссылка ).
Теперь я хочу издеваться, например, ProductController : BaseController
.
var controller = new Mock<ProductController>();
var user = new Mock<CustomPrincipal>();
user.SetupGet(x => x.FullName).Returns("some full name");
controller.SetupGet(x => x.UserRoleID).Returns(81);// UserRoleID is getter and I do some stuff here.
controller.SetupGet(x => x.User).Returns(user.Object);
Любая помощь будет оценена.