I am trying to write unit test for my project using moq package.
`
[Fact]
public async Task Login_WrongPasswordTryLimitNotReached_ReturnWrongPasswordAsync()
{
// Arrange
var service = new Mock(_userManager.Object, _roleManager.Object, _configuration.Object, _roleService.Object, _dbContext.Object) { CallBase = true };
User user = new User { FirstName = "admin", LastName = "admin", Status = UserStatus.Active };
_userManager.Setup(x => x.CheckPasswordAsync(It.IsAny<User>(), It.IsAny<string>())).ReturnsAsync(false);
_userManager.Setup(x => x.FindByNameAsync(It.IsAny<string>())).ReturnsAsync(user);
service.Setup(x => x.IsLoginFailLimitReached(user)).ReturnsAsync(false);
AuthenticateDto authenticateDto = new AuthenticateDto();
// Act
var result = await service.Object.Login("admin", "password");
// Assert
Assert.Equal((authenticateDto, "Hatalı şifre"), result);
}`
I cannot mock IsLoginFailLimitReached since it is not virtual and also it was a private that is only meaning in the AuthService class. I changed IsLoginFailLimitReached to be public and virtual. But is there a better solution without changing the implementation?