gpt4 book ai didi

asp.net-mvc-3 - MvcMailer:无法在使用 Url.Action 的 Razor View 上完成 NUnit 测试

转载 作者:行者123 更新时间:2023-12-02 15:48:35 25 4
gpt4 key购买 nike

这是我的问题 - 我正在使用 MvcMailer使用 Razor 语法创建格式良好的电子邮件,这是一个很棒的工具!

我遇到的问题是这样的 - 这是我发送的一封电子邮件的 View 中的一些语法:

<p>Click here to return to <a href="@Url.Abs(Url.Action("Details", "Home", new{ Id=ViewBag.IdeaId}))">@ViewBag.IdeaName</a></p>

每当我尝试运行单元测试时,都会收到以下错误消息:

Can we send out email notifications for new comments?: System.ArgumentNullException : Value cannot be null. Parameter name: httpContext

Stacktrace - 为了简洁而缩短,仅相关部分:

at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) at Mvc.Mailer.MailerBase.CreateControllerContext() at Mvc.Mailer.MailerBase.ViewExists(String viewName, String masterName) at Castle.Proxies.Invocations.MailerBase_ViewExists.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed()

问题是我的 HttpContext 为空 - 有没有一种简单的方法来单元测试这个 MvcMailer 方法,而不必模拟 Controller 上下文中的所有内容一直到路由结果?

最佳答案

您可以查看 MvcMailer wiki 中标题为对您的邮件进行单元测试的部分。您需要做的就是模拟 PopulateBody 方法,然后它将绕过 View 渲染作为测试的一部分。它应该类似于以下内容:

_userMailerMock.Setup(mailer => mailer.PopulateBody(It.IsAny<MailMessage>(), "Welcome", null));

希望这有帮助!

关于asp.net-mvc-3 - MvcMailer:无法在使用 Url.Action 的 Razor View 上完成 NUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575964/

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