gpt4 book ai didi

c# - 使用 Rhino Mock 进行 MvcMailer 单元测试,如何?

转载 作者:行者123 更新时间:2023-11-30 21:15:38 24 4
gpt4 key购买 nike

在我们使用 MvcMailer 的新项目中,它很棒,我想知道如何使用 Rhino 和 NUnit 对其进行测试?还有一个post on SO和一个 good Wiki page但这不是我要找的。对于我的 Controller ,我通常用 MvcContrib's Testhelper 测试它们

  • 我首先尝试模拟邮件程序类,但如果这样做,我将无法验证我的 ViewBag 数据,我在使用 PopulateBody 方法时遇到问题,我必须构建自己的 IMailerBase 接口(interface)
  • 在此之后,我尝试像使用 MvcContrib 对 Controller 所做的那样测试邮件程序,但它只接受 InitializeController() 中的 Controller 对象,因此它不起作用。
  • MailerBase.cs class 中还有一个 IsTestModeEnabled 属性但是当我针对它进行测试时,我在空 URI 上遇到错误。

不知道什么是最好的方法,我正在寻求帮助,谢谢大家!

最佳答案

这是我的代码:

// arrange
var passwordMailer = MockRepository.GeneratePartialMock<PasswordMailer>();
passwordMailer.Stub(mailer => mailer.PopulateBody(Arg<MailMessage>.Is.Anything, Arg.Is("ForgotPassword"), Arg<string>.Is.Null, Arg<Dictionary<string, string>>.Is.Null));

// act
var mailMessage = passwordMailer.ForgotPassword("test@example.com", "4454-8838-73773");

// assert
Assert.AreEqual(string.Format(Login.mailBody, "4454-8838-73773"), passwordMailer.ViewBag.Body);
Assert.AreEqual(Login.mailSubject, mailMessage.Subject);
Assert.AreEqual("test@example.com", mailMessage.To.First().ToString());

如您所见,您可以使用 Rhino 的 partialMock 功能来实现它。

关于c# - 使用 Rhino Mock 进行 MvcMailer 单元测试,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5643928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com