如果我有这个测试
Expect.Call(_session.Single<Admin>(x => x.Email == userModel.Email)).Repeat.Once().Return(null);
告诉我
Rhino.Mocks.Exceptions.ExpectationViolationException
:
ISession.Single(x
=> (x.Email == value(Enquete.Test.Controllers.MemberControllerTest+c__DisplayClassb).userModel.Email));
预期#1,实际#0。
它失败了,但如果我添加 .IgnoreArguments() ,它就可以工作。是否可以使用 lambda 进行测试?如果我调试,我可以看到我的电子邮件是相同的。
这是完整的测试:
[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] /cdn-cgi/l/email-protection";
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());
}
谢谢你!
单元测试中的 lambda 编译为类级方法(单元测试中的方法)。在控制器内部,不同的 lambda 编译为类级方法(在控制器内部)。使用两种不同的方法,因此 Rhino Mocks 显示期望错误。更多这里:http://groups.google.com/group/rhinomocks/browse_frm/thread/a33b165c16fc48ee?tvc=1 http://groups.google.com/group/rhinomocks/browse_frm/thread/a33b165c16fc48ee?tvc=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)