Я хотел бы знать, может ли кто-нибудь помочь мне с этим.Mock ApplicationUserManager для модульного тестирования Контроллеры MVC
Я пишу модульные тесты для конкретного контроллера. Этот контроллер наследует от BaseController и BaseController обладает этим свойством:
private ApplicationUserManager userManager;
public ApplicationUserManager UserManager
{
get { return this.userManager ?? this.Request.GetOwinContext().GetUserManager<ApplicationUserManager>(); }
set { this.userManager = value; }
}
т е р для ApplicationUserManager является:
public ApplicationUserManager(IUserStore<ApplicationUser> store, IIdentityMessageService emailService)
: base(store)
{
this.EmailService = emailService;
var dataProtectionProvider = Startup.DataProtectionProvider;
this.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity"));
}
Это то, что я делаю, чтобы дразнить класс ApplicatonUserManager:
var store = new Mock<IUserStore<ApplicationUser>>();
var emailService = new Mock<IIdentityMessageService>();
var applicationUserManager = new Mock<ApplicationUserManager>(store.Object, emailService.Object);
this.targetController.UserManager = applicationUserManager.Object;
var dataprotectionprovided = new Mock<IDataProtectionProvider>();
applicationUserManager.Setup(r => r.UserTokenProvider).Returns(new DataProtectorTokenProvider<ApplicationUser, string>(dataprotectionprovided.Object.Create("ASP.NET Identity")));
this.targetController.UserManager = applicationUserManager.Object;
Я попытался издеваться над этим, но поскольку это не виртуальная собственность (UserTokenProvider), это не позволяет мне, и я получаю это исключение:
System.NotSupportedException: Invalid setup on a non-virtual (overridable in VB) member: r => r.UserTokenProvider
Может ли кто-нибудь помочь мне с этой проблемой? Я просто хочу, чтобы дразнить это для того, чтобы проверить контроллер, который наследуется от BaseController, который имеет эту собственность ..
Благодаря
Вместо насмешливого ApplicationUserManager, вы можете создать еще один конструктор для него и его экземпляра с помощью альтернативного конструктора? – bwyn