MvcMailer 单元测试:System.ArgumentNullException httpContext 不能为 null

2023-11-27

我无法使用 Visual Studio 测试套件和 Moq 成功运行 MvcMailer 的单元测试。 我已经从 wiki 逐字复制了示例,但每次都会出现以下异常:

Test method MvcMailerTest.Tests.MailerTest.TestMethod1 threw exception: 
System.ArgumentNullException: Value cannot be null.
Parameter name: httpContext

代码如下:(使用VS单元测试框架-使用nUnit时出现与示例中完全相同的错误)

        //Arrange: Moq out the PopulateBody method
        var _userMailerMock = new Mock<UserMailer>();
        _userMailerMock.Setup(mailer => mailer.PopulateBody(It.IsAny<MailMessage>(), "Welcome", null));            
        _userMailerMock.CallBase = true;

        //Act
        var mailMessage = _userMailerMock.Object.Welcome();

在 Welcome() 方法中的以下行失败(直接从 wiki 复制):

 PopulateBody(mailMessage, viewName: "Welcome");

维基百科在这里:https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

类似(几乎完全相同)的问题:MvcMailer:无法在使用 Url.Action 的 Razor 视图上完成 NUnit 测试

有人知道如何解决/解决这个问题吗?链接的问题说我需要模拟我已经完成的 PopulateBody 方法(根据维基)。


对 Filip 的答案的快速补充可能会对某人有所帮助:我正在使用 MvcMailer 包的 4.0 版。我当时用的是Populate(Action<MvcMailMessage> action)我的邮件程序操作中的方法并注意到它使用four-参数版本PopulateBody:

// Mvc.Mailer.MailerBase (using ILSpy)
public virtual MvcMailMessage Populate(Action<MvcMailMessage> action)
{
    MvcMailMessage mvcMailMessage = new MvcMailMessage();
    action(mvcMailMessage);

    // Four parameters! (comment added by me)
    this.PopulateBody(mvcMailMessage, mvcMailMessage.ViewName, mvcMailMessage.MasterName, mvcMailMessage.LinkedResources);

    return mvcMailMessage;
}

因此,我发现用四个参数设置模拟......

PopulateBody(mailMessage, "Welcome", "SomeMasterName", null);

...成功了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MvcMailer 单元测试:System.ArgumentNullException httpContext 不能为 null 的相关文章

  • 如何从 OpenCover 报告中排除类别

    在使用 OpenCover 为 MSTest 套件生成覆盖率报告 然后使用 ReportGenerator 生成 HTML 报告 时 我尝试排除框架生成的类 特别是 通过服务引用在项目的命名空间下生成的类 我用来生成 XML 文件的命令如下
  • asp.net mvc - Ajax 刷新视图的每个元素

    希望在退出 jquery 对话框后使用 ajax 刷新当前页面 我有一个包含 foreach 循环的视图 数据是从模型中提取的 每个循环有 2 个编辑 删除按钮 当我单击 编辑按钮 时 将打开一个 jquery UI 对话框进行编辑 当我保
  • 是否可以对 JUnit 中的每个测试用例使用不同的 @Before @After?

    我是新来的Java JUnit并遇到了不同的Fixtures 我在网上搜索了很多 但没有得到答案 是否可以使用不同的 Before After对于不同的测试用例JUnit 例如 我有以下 TC 那么是否可以使用不同的 Before用于测试和
  • 测试项目和配置文件

    我的 Visual Studio 2008 解决方案中有这种设置 一个使用库 Lib1 需要 app config 文件中的一些配置条目 的 WCF 服务项目 WCFService 我有一个单元测试项目 MSTest 其中包含与 Lib1
  • MVC3 和实体框架

    我的问题很简单 将 edmxMVC3 项目的 Web 应用程序的模型文件夹中的文件吗 我的答案非常简单 不要用数据访问逻辑和数据建模搞乱表示层 整个 MVC 应用程序 Visual Studio 解决方案中从下到上至少有 4 个项目 1 P
  • C# 模拟接口与模拟类

    我是 net 中的最小起订量框架的新手 根据我的在线研究 似乎有两种方法可以使用这个框架 要么模拟接口 要么模拟具体类 似乎在嘲笑具体类时 只有virtual方法可以被嘲笑 就我而言 我只想模拟实现接口的类的几个方法 例如 如果我们有以下内
  • PHP 启动:运行单元测试时无法加载动态库

    当我尝试运行单元测试时 出现此错误 PHP 警告 PHP 启动 无法加载动态库 bz2 尝试过 xampp php ext bz2 找不到指定的模块 xampp php ext php bz2 dll 找不到指定的模块 在未知的第 0 行
  • 使用文件 IO 的单元测试方法

    我正在努力养成编写单元测试的习惯 我之前写过一些 但它们通常都很基础 我想开始转向 TDD 因为我想提高质量我的代码 设计和结构 减少耦合 同时希望减少可测试构建的回归数量 我从一个相对简单的项目开始 生成的程序监视一个文件夹 然后对该文件
  • 如何在 Laravel 中基于 application/json 标头加载路由

    我正在使用application json标头来控制我的控制器在收到请求时的行为 我需要在单元测试中的 POST 中包含application json header 我试过了 public function testStore this
  • 提交表单时获取查询字符串值...MVC3

    在我的 MVC3 应用程序中 如果我在 url 中输入查询字符串值并按 Enter 键 我可以获得输入的值 localhost 34556 db test 我将触发的默认操作 public ActionResult Index string
  • 在代码 MVC Razor 中渲染部分视图

    我正在使用 MVC 3 Razor 制作一个简单的 CMS 以用于实践目的 我的想法是创建一些部分视图 我想要进行数据库查找 并发现 3 个部分视图需要渲染到页面 我该怎么做 在 WebForms 中 您可以调用 LoadControl C
  • Spring @ContextConfiguration

    我正在运行下一个测试 import static org junit Assert assertEquals import org junit Test import org junit runner RunWith import org
  • 关于JSON和序列化的问题

    我的视图模型有一个强类型视图 其中包含一个对象 Person 和一个技能列表 人是很直率的 我像这样使用 Html Helpers Html TextBoxFor m gt m Person FirstName 我提交表格并得到我想要的 问
  • ASP.NET MVC 3,如何正确制作主题

    我正在寻找有关如何以最佳方式在 MVC 3 中实现 主题 的输入 我想需要一个自定义视图引擎来负责定位视图文件等 我还希望主题系统是可扩展的 这样 如果它只是其中一个视图 我想更改其他视图 但仍使用默认值 有点像 Orchard 项目吗 想
  • 我的单元测试 ReSharper 装订线图标未显示

    我已经安装了 ReSharper 4 1 和 Gallio 3 0 5 但没有获得单元测试的装订线图标 测试似乎在测试资源管理器中运行良好 但代码中的测试旁边没有图标 可能是什么原因造成的 我之前安装了 MbUnit 2 4 ReSharp
  • Razor 如何创建一个复选框并使其只读?

    我正在使用 MVC 3 和 Razor 目前我正在使用 model MyProject ViewModels MyViewModel foreach var item in Model MyProperty tr td Html Actio
  • 在 Android 中跨单元测试和仪器测试共享资源

    现在谷歌已经添加了实验单元测试支持 http tools android com tech docs unit testing support 如何在单元测试和仪器测试之间共享资源 例如 假设我有一个TestUtils java我希望在单元
  • WebService ASP.NET MVC 3 发送和接收

    这几天我一直在绞尽脑汁思考如何满足新的要求 我有两个网站 第一个让用户填写申请表 第二个网站是用于管理用户应用程序的内部网站 我需要开发一个 Web 服务 将应用程序数据从网站 1 发送到网站 2 并向网站 2 返回成功或失败的响应 我以前
  • 为什么要调用base.OnActionExecuting(filterContext);?

    我只是在看我的一些旧代码 我有一个动作过滤器 OnActionExecuting 方法 最后我有 base OnActionExecuting filterContext 为什么到处搜索我都看到这个很多次了 我还看到 在我的旧授权标签中 我
  • 如何使用 DropDownListFor

    我想向网页添加下拉列表 html 控件 并用产品列表填充它 我的动作控制器看起来像 public ActionResult Index return View repository GetProducts true 产品模型 Linq to

随机推荐

  • R重命名函数中传递的列

    我一直在寻找这个并发现这个链接有助于重命名函数中传递的列 column name 实际制作的代码my function1在我寻找了一段时间后工作 有没有办法使用管道运算符来重命名函数内数据框中的列 我的尝试显示在my function2但它
  • Ubuntu 上的 ASP.Net Core 应用程序服务仅侦听端口 5000

    我正在尝试在 Ubuntu 服务器上托管 ASP Net Core MVC 应用程序 启用了 https 重定向 使用 Nginx 作为反向代理 我已使用 OpenSSL 创建并安装了本地 SSL 证书 当我使用 dotnet CLI 运行
  • 为什么 Web 部署代理服务监听端口 80 和 8172

    在四个 Win Server 2008 R2 机器上 我们安装了 MS Deploy 它侦听端口 80 和 8172 这使人们对网络上有关在 IIS 7 上运行时无需更改端口 80 默认值的所有其他材料产生疑问 我无法理解 为什么它使用两个
  • std::move 如何将表达式转换为右值?

    我不完全理解的实现std move 也就是说 我对 MSVC 标准库中的这种实现感到困惑 template
  • 使用 php 在文本文件中搜索短语/单词

    我如何扫描目录中的特定文本行并使用 php 列出所有匹配的文件 Thanks 几天前我实际上为此编写了一个函数 这是扫描每个文件的基本函数 foreach glob
  • Haskell 中无限列表的笛卡尔积

    我有一个有限列表的函数 gt kart a gt b gt a b gt kart xs ys x y x lt xs y lt ys 但如何实现它infinite清单 我听说过一些关于康托尔和集合论的事情 我还发现了一个类似的功能 gt
  • 如何优化此 Python 代码(来自 ThinkPython,练习 10.10)

    我正在通过艾伦唐尼工作如何像计算机科学家一样思考 并且我已经为练习 10 10 编写了我认为功能正确的解决方案 但运行只花了 10 多个小时 所以我想知道我是否错过了一些非常明显且有用的优化 这是练习 如果从每个单词中交替取字母形成一个新单
  • 从 iframe 外部调用 javascript 函数

    我在 iframe 中有一个完整的 html 打开 其中包含 javascript 函数 getData 现在我不确定如何从该框架外部调用 getData 是否可以从外部 javascript 文件调用它 您可以从 window frame
  • 向公众公开 Firebase apiKey 是否安全?

    The Firebase Web 应用程序指南状态我应该把给定的apiKey在我的 Html 中初始化 Firebase TODO Replace with your project s customized code snippet
  • jquery 重新排序 div

    我有 3 个 div 想要反转文档准备好的顺序 div First div div Second div div Third div 我怎样才能在 jquery 中做到这一点 div div First div div Second div
  • 将十六进制字符串转换为 IP 地址

    我想将字符串值 十六进制 转换为 IP 地址 我该如何使用 Java 来做到这一点 十六进制值 0A064156 IP 10 6 65 86 This site给了我正确的结果 但我不确定如何在我的代码中实现它 可以直接在 XSLT 中完成
  • 将元组添加到集合中不起作用

    scala gt val set scala collection mutable Set Int Int set scala collection mutable Set Int Int Set scala gt set 3 4
  • C# 遍历类属性

    我目前正在设置类对象的所有值Record 这是我目前用来逐个属性填充记录的代码 Loop through each field in the result set for int i 0 i lt resultItems Length i
  • PHP:如何清理上传的文件名?

    我有一个 PHP 应用程序 我允许用户将文件上传到我的网络应用程序 Question 对我来说清理上传文档的文件名的最佳方法是什么 FILES filename tmp name in PHP UPDATE 我可以获取上传文件名的 MD5
  • 在MySQL中实现大量数据快速插入的最佳方法是什么?

    我用 C 编写了一个程序来解析大型 XML 文件 然后使用插入语句创建文件 其他一些进程会将文件摄取到 MySQL 数据库中 这些数据将作为索引服务 以便用户可以轻松查找文档 我选择InnoDB是因为它具有行级锁定的能力 C 程序将在给定调
  • Python:抑制进入命令行的错误?

    当我尝试从命令行执行 python 程序时 出现以下错误 这些错误不会对我的输出造成任何问题 我不希望它显示在命令行中 Traceback most recent call last File test py line 88 in
  • 在两个数组上进行 ng-repeat

    我想对由两个数组组成的数组执行 ng repeat 如下所示 titles links 我的数组 标题和链接 具有相同的长度 最后 我想在 ng repeat 中打印类似的内容 array title array link 例如 在 C 程
  • Jenkins 和 NodeJS 插件 - 权限被拒绝错误 = 13

    我正在运行最新版本Jenkins v 1 563 and Node 0 10 28 我有一个构建良好的 Java 项目 当我将预构建步骤添加为节点脚本时 选中提供节点和 npm bin 文件夹到 PATH 尽管我已向所有内容 节点 tomc
  • Carrierwave为处理后的图像添加水印

    我尝试使用从多个资源获得的以下代码向处理后的图像添加水印 def watermark manipulate do img logo Magick Image read Rails root assets images watermarks
  • MvcMailer 单元测试:System.ArgumentNullException httpContext 不能为 null

    我无法使用 Visual Studio 测试套件和 Moq 成功运行 MvcMailer 的单元测试 我已经从 wiki 逐字复制了示例 但每次都会出现以下异常 Test method MvcMailerTest Tests MailerT