Я тестирую код, который требует входа пользователя в систему. Когда я пытаюсь войти в систему с AccountController
, похоже, что все работает, но в AccountController
(IPrincipal) User
все еще null. Как я могу правильно войти (или, может быть, я как-то издеваюсь над ним)?Как я могу протестировать методы, которые должны быть зарегистрированы пользователем
public async Task SetupAsync()
{
var context = new DataContext();
var manager = new UserManager(new UserStore(context));
var accountController = new AccountController(manager);
var mockAuthenticationManager = new Mock<IAuthenticationManager>();
mockAuthenticationManager.Setup(am => am.SignOut());
mockAuthenticationManager.Setup(am => am.SignIn());
accountController.AuthenticationManager = mockAuthenticationManager.Object;
var user = new LoginViewModel
{
Email = "[email protected]",
Password = "useruser",
RememberMe = false
};
if (manager.FindByEmail("[email protected]") == null)
{
await manager.CreateAsync(new User { Email = "[email protected]", UserName = "[email protected]" }, "useruser");
}
await accountController.Login(user, "home/index");
_calendarController = new CalendarController(context);
}
Здесь я получил Пользователь нулевого исключения:
public ClaimsPrincipal CurrentUser
{
get { return new ClaimsPrincipal((System.Security.Claims.ClaimsPrincipal)this.User); }
}
Edit: На обратной линии, у меня есть еще User
свойство нуля. Это пример из AccountController
:
var user = await _userManager.FindAsync(model.Email, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
return RedirectToAction("index", "calendar");
}
не могли бы вы дать код для источника? также, какое тестирование вы хотите сделать? модульное тестирование? –
Да, это должно быть модульное тестирование. Теперь это беспорядок с некоторыми поведениями интеграционных тестов. В идеале я обволакивал, как фокусный контекст (я буду использовать среду Effor для этого) и протестировать интеграцию позже. –
Также, может быть, я должен добавить: когда я использую веб-сайт вручную, все работает, Пользователь не имеет значения. –