Нужна ваша помощь в том, как написать пример модульного теста в основном удостоверении пользователя ASP.net.
В текущем дизайне мы используем Мой контроллер, используя Injection Injection. Он вводит все ниже класса
У меня есть контроллер, у которого есть инъекция зависимостей, как настроить все параметры с помощью модуля x.
Я пробовал следующие вещи, но не уверен, как издеваться над всем классом внедрения зависимостей интерфейса. Пожалуйста, найдите контроллер ниже.
когда я запускаю этот тест, список пользователей _userManager равен нулю. пожалуйста, помогите мне в этом, как данные будут поступать в _usermanger
//This below m controller for which i need to write a x unit testcase
public UsersController(
UserManager<ApplicationUser> userManager,
ApplicationDbContext applicationDbContext,
IEmailSender emailService,
IConfiguration configuration)
{
_userManager = userManager;
_applicationDbContext = applicationDbContext;
_emailService = emailService;
_configuration = configuration;
}
//controller Method for which i need to write a test case
[HttpGet]
[Route("User")]
[AllowAnonymous]
public async Task<IActionResult> AppUser([FromQuery] string username)
{
var user = await _userManager.FindByNameAsync(username);
return ok(user);
}
// This is my test message which I'm writing
ApplicationUser testUser = new ApplicationUser { UserName = "testuser1"};
var mockStore = new Mock<IUserStore<ApplicationUser>>();
var mockUserManager = new Mock<UserManager<ApplicationUser>>
(mockStore.Object, null, null, null, null, null, null, null, null);
mockStore.Setup(x => x.CreateAsync(appuser,
It.IsAny<CancellationToken>()))
.Returns(Task.FromResult(IdentityResult.Success));
mockStore.Setup(x => x.FindByNameAsync(testUser.UserName, It.IsAny<CancellationToken>()))
.Returns(Task.FromResult(testUser));
var fakeEmailSender = new Mock<IEmailSender>();
var fakeConfiguration = new Mock<IConfiguration>();
var Controller = new UsersController(mockUserManager.Object,
context, fakeEmailSender.Object, fakeConfiguration.Object);
var res = Controller.AppUser("testuser1");
}
Без хотя бы некоторых основ насмешек этот вопрос будет слишком широким. Мы не можем знать, как должны вести себя ваши макеты.
В частности, вы не предоставили никакой информации о том, где и как вы используете зависимости. Например. где используется _userManager? Как должен вести себя менеджер, когда вы вызываете на него члена?
Я использую это, чтобы имитировать приведенный ниже код var mockUserStore = new Mock<IUserStore<ApplicationUser>>(); var userManager = новый UserManager<ApplicationUser>(mockUserStore.Object); но получаю ошибку. Если я использую как этот Moc<Applicationuser>, но не могу пройти как параметр
Ээээм, что? Не могли бы вы отредактировать свой вопрос с этой информацией? Я не получаю картину здесь.
@HimBromBeere Привет, я отредактировал свой вопрос, не могли бы вы проверить и предложить мне, если я что-то пропустил?





Что ж, я предполагаю, что вам нужно что-то назначить
_userManager(и другим вашим зависимостям), возможно, ваш издевательский экземпляр. Однако откуда нам знать, как должен выглядеть этот экземпляр? Вы спрашиваете нас, как издеваться над ними? Вы смотрели в документах Moq, например. github.com/Moq/moq4/wiki/Быстрый старт?