这是我的问题 - 我正在使用Mvc邮件程序使用 Razor 语法创建格式良好的电子邮件,它是一个很棒的工具!
我遇到的问题是这样的 - 这是我发送的一封电子邮件的视图中的一些语法:
<p>Click here to return to <a href="@Url.Abs(Url.Action("Details", "Home", new{ Id=ViewBag.IdeaId}))">@ViewBag.IdeaName</a></p>
每当我尝试运行单元测试时,都会收到以下错误消息:
我们可以发送新评论的电子邮件通知吗?:System.ArgumentNullException:值不能为空。
参数名称:httpContext
Stacktrace - 为了简洁而缩短,仅相关部分:
在 System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)
在 Mvc.Mailer.MailerBase.CreateControllerContext()
在Mvc.Mailer.MailerBase.ViewExists(字符串viewName,字符串masterName)
在 Castle.Proxies.Invoices.MailerBase_ViewExists.InvokeMethodOnTarget()
在 Castle.DynamicProxy.AbstractInspiration.Proceed()
问题是我的 HttpContext 为 null - 有没有一种直接的方法来单元测试这个 MvcMailer 方法,而不必模拟控制器上下文中的所有内容一直到路由结果?
您可以查看标题为对您的邮件进行单元测试 at the MvcMailer 维基您需要做的就是模拟 PopulateBody 方法,然后它将绕过视图渲染作为测试的一部分。它应该类似于以下内容:
_userMailerMock.Setup(mailer => mailer.PopulateBody(It.IsAny<MailMessage>(), "Welcome", null));
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)