I이 테스트단위 테스트 모의 Rhino의
Expect.Call(_session.Single<Admin>(x => x.Email == userModel.Email)).Repeat.Once().Return(null);
날
Rhino.Mocks.Exceptions.ExpectationViolationException 말하는있는 경우 사용 페일 x.Email == value (Enquete.Test.Controllers.MemberControllerTest + <> c__DisplayClassb) .userModel.Email)); 예상 # 1, 실제 # 0.
.IgnoreArguments()를 추가해도 실패하지만 .IgnoreArguments()가 추가됩니다. 람다를 사용하여 테스트 할 수 있습니까? 내가 디버깅하면 내 이메일이 똑같은지 알 수 있습니다.
[Test]
public void Register_Post_ReturnRedirectOnSuccess()
{
_builder.InitializeController(_controller);
var userModel = TestHelper.CreateMemberModel();
var returnMemberRole = "Member";
var tempPassword = "Val1dPass";
var member = TestHelper.CreateMember(userModel);
var emailSubscription = "[email protected]";
var subjectNotification = "sujet du meessaaggee";
var mailUseSSL = "true";
var message = userModel.FirstName + " " + userModel.LastName + " s'est inscrit au système d'enquête en ligne, veuillez confirmer son inscription.";
member.PasswordExpire = DateTime.Now.AddDays(-1);
member.Phone = userModel.Phone;
member.MemberNumber = userModel.MemberNumber;
member.PasswordExpire = DateTime.Now.AddDays(-1);
Expect.Call(_session.Single<Admin>(x => x.Email == userModel.Email)).Repeat.Once().Return(null);
Expect.Call(_session.Single<Member>(x => x.Email == userModel.Email)).Repeat.Once().IgnoreArguments().Return(null);
Expect.Call(_authService.GeneratePassword()).Repeat.Once().Return(tempPassword);
Expect.Call(_authService.MemberRole).Repeat.Once().Return(returnMemberRole);
Expect.Call(_authService.RegisterUser(userModel.Email, tempPassword, returnMemberRole)).Repeat.Once().Return(MembershipCreateStatus.Success);
_session.Add(member);
LastCall.Repeat.Once();
_session.CommitChanges();
LastCall.Repeat.Once();
Expect.Call(_configHelper.GetValue("emailSubscription")).Repeat.Once().Return(emailSubscription);
Expect.Call(_configHelper.GetValue("subjectNotification")).Repeat.Once().Return(subjectNotification);
Expect.Call(_configHelper.GetValue("MailUseSSL")).Repeat.Once().Return(mailUseSSL);
_mailHelper.SendMail(emailSubscription, subjectNotification, message, Convert.ToBoolean(mailUseSSL));
LastCall.Repeat.Once();
_mock.ReplayAll();
var result = _controller.Register(userModel);
_mock.VerifyAll();
result.AssertActionRedirect().ToAction<MemberController>(c => c.RegisterSuccess());
}
감사합니다 :
다음은 전체 테스트입니다!
Rhino를 사용하고 문제가있는 사람을 만날 때마다 Daniel Cazullino (및 다른 사람들)가 Moq를 확인해 보는 것이 좋습니다. 그것은 당신의 문제를 해결하지 못할 수도 있지만, 그것은 내 테스트를 청소하는 데 도움이 더 나은 람다를 배우게되었습니다. –