설정 방법 Mock<UserManager<ApplicationUser>> _userManager
에 그렇게 _userManager.FindByIdAsync(userId)
이 ApplicationDbContext로 이동이 _context.Users.SingleOrDefault(u=>u.Id == userId)
같은 ID로 사용자를 발견?를 설치하는 방법 모의 <UserManager <TUser >>
내 코드 : 나는 FindByIdAsync
을 조롱에 부착하고
[TestClass]
public class AccountControllerTest
{
private ApplicationDbContext _context;
private Mock<UserManager<ApplicationUser>> _userManager;
private IHostingEnvironment _enviroment;
private Referrals _referrals;
private Mock<IEmailSender> _emailSender;
private Mock<IUserNameGenerator> _userNameGenerator;
private Mock<IUrlHelper> _urlHelper;
private Mock<SignInManager<ApplicationUser>> _signInManager;
private TimeSpan _startTrialTime;
[TestInitialize]
public void Init()
{
_userManager = UserManagerAndDbMocker.GetMockUserManager();
_context = UserManagerAndDbMocker.ContextInMemoryMocker();
_enviroment = new HostingEnvironment() { EnvironmentName = "Development" };
_referrals = new Referrals(_context, _userManager.Object);
_emailSender = new Mock<IEmailSender>();
_userNameGenerator = new Mock<IUserNameGenerator>();
_urlHelper = new Mock<IUrlHelper>();
_signInManager = new Mock<SignInManager<ApplicationUser>>();
UserManagerSetup();
}
private void UserManagerSetup()
{
_userManager.Setup(um => um.CreateAsync(
It.IsAny<ApplicationUser>(),
It.IsAny<string>()))
.Returns(Task.FromResult(IdentityResult.Success));
_userManager.Setup(um => um.ConfirmEmailAsync(
It.IsAny<ApplicationUser>(),
It.IsAny<string>()))
.Returns(
Task.FromResult(IdentityResult.Success));
_userManager.Setup(um => um.FindByIdAsync(It.IsAny<string>()));
}
. _userManager.FindById(userId)
을 _context.Users.SingleOrDefault(u=>u.Id == userId)
(으)로 테스트 할 때 원합니다.
public static class UserManagerAndDbMocker
{
public static Mock<UserManager<ApplicationUser>> GetMockUserManager()
{
var userStoreMock = new Mock<IUserStore<ApplicationUser>>();
return new Mock<UserManager<ApplicationUser>>(
userStoreMock.Object, null, null, null, null, null, null, null, null);
}
public static ApplicationDbContext ContextInMemoryMocker()
{
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
optionsBuilder.UseInMemoryDatabase();
var context = new ApplicationDbContext(optionsBuilder.Options);
return context;
}
}
어떻게 구현할 수 있습니까? 내가 제대로 질문을 이해한다면
참조하십시오. [ask]를 읽고 문제를 더 잘 이해하는 데 사용할 수있는 [mcve]를 제공하십시오. – Nkosi
안녕하세요 @ 존스, 우리에게 예제 코드를 보내거나 완전히 붙여 넣으면 올바른 방향으로 갈 수 있도록 도와 줄 것입니다. 이 의견에 대한 답변과 내가 살펴 보겠습니다. (그런데, Moq 라이브러리에 익숙합니까?) – Juan