MVC 컨트롤러를 테스트 중이며 내 저장소 중 하나에서 Save 메서드가 호출되는지 테스트하려고합니다. 컨트롤러는 사용자 등록을 시도하는 AccountController입니다. 내 AccountRepository에는 저장 및 등록이라는 두 가지 방법이 있습니다. 등록은 몇 가지 점검 후에 저장을 호출합니다. Register가 호출되는지 여부와 Register를 호출 할 때 Save가 호출되는지 또는 테스트에서 Moq를 잘못 설정했는지 여부를 확인하기 위해 저장소에서 별도의 단위 테스트를 실행해야하는지 잘 모르겠습니다.MVC 컨트롤러에서 메서드를 확인하기 위해 moq를 사용합니다.
[TestMethod]
public void register_post_saves_valid_registration()
{
_mockMemberRepository.Setup(r => r.GetByEmail(It.IsAny<string>())).Returns(_testMember);
// Arrange
RegisterViewModel model = new RegisterViewModel()
{
Email = "[email protected]",
Password = "test123",
ConfirmPassword = "test123"
};
// Act
ActionResult result = _controller.Register(model);
// Assert
_mockMemberRepository.Verify(r => r.Register(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once());
_mockMemberRepository.Verify(r => r.Save(It.IsAny<Member>()), Times.Once());
}
이 행 :
여기 내 테스트입니다
_mockMemberRepository.Verify(r => r.Register(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once());
이 테스트를 통과,하지만 아래의 라인을 소개 할 때 :
_mockMemberRepository.Verify(r => r.Save(It.IsAny<Member>()), Times.Once());
실패합니다.
이public MembershipCreateStatus Register(string email, string password, string confirm)
{
if (password.Equals(confirm))
{
try
{
Member m = GetByEmail(email);
if (m == null)
{
int format = (int)PasswordFormatEnum.Encrypted;
string salt = GenerateSalt();
string pass = EncodePassword(password, format, salt);
m = new Member()
{
Email = email,
Password = pass,
PasswordSalt = salt,
PasswordFormat = format
};
Save(m);
return MembershipCreateStatus.Success;
}
else
return MembershipCreateStatus.DuplicateEmail;
//"A user with that email address already exists. Please use the Forgotten Password link if you need to recover your password.";
}
catch (Exception ex)
{
_logger.LogError(ex);
return MembershipCreateStatus.ProviderError;
}
}
return MembershipCreateStatus.InvalidPassword;
}
내 Save
방법은 단지 회원 객체를 취하고 무효 방법입니다 :
여기 내 저장소에 내 등록 방법입니다.
내가 뭘 잘못하고 있니?
지금까지 '설정이 구성되지 않았습니다.'라는 오류 메시지가 나타납니다. – lloydphillips