如何在控制器中模拟 Automapper (IMapper)

2024-06-25

我正在尝试为现有的 MVC Web 应用程序编写单元测试。我在自动映射器中面临一些问题(IMapper)每当使用地图函数时它都会返回null value.

我的控制器代码:

public class UserAdministrationController : BaseController
{
    private readonly iUserService _userService;
    private readonly IMapper _mapper;

    public NewsController(iUserService userService, IMapper mapper)
    {
        _userService = userService;
        _mapper = mapper;
    }

    public ActionResult Create(int CompanyID == 0)
    {            
        UserDetail data = _userService(CompanyID);
        var Modeldata = _mapper.Map<UserDetailViewModel, UserDetail>(data);
        return View(Modeldata);
    }
} 

模拟映射代码:

public class MappingDataTest : CommonTestData
{
    public Mock<IMapper> MappingData()
    {
        var mappingService = new Mock<IMapper>();
        UserDetailViewModel interview = getUserDetailViewModel(); // get value of UserDetailViewModel
        UserDetail im = getUserDetail(); // get value of UserDetails

        mappingService.Setup(m => m.Map<UserDetail, UserDetailViewModel>(im)).Returns(interview);
        mappingService.Setup(m => m.Map<UserDetailViewModel, UserDetail>(interview)).Returns(im);

        return mappingService;
    }
}

模拟代码:

[TestClass]
public class UserAdminControllerTest
{
    private MappingDataTest _common;

    [TestInitialize]
    public void TestCommonData()
    {
        _common = new MappingDataTest();
    }

    [TestMethod]
    public void UserCreate()
    {
        //Arrange                                               
        UserAdministrationController controller = new UserAdministrationController(_common.mockUserService().Object, _common.MappingData().Object);
        controller.ControllerContext = _common.GetUserIdentity(controller);

        // Act
        ViewResult newResult = controller.Create() as ViewResult;

        // Assert
        Assert.IsNotNull(newResult);
    }
}

映射器不工作它总是显示null控制器中的值。请帮助我。提前致谢。


我建议不要嘲笑 AutoMapper。控制器单元测试没有多大价值,这类似于模拟 JSON 序列化器。只需使用真实的东西即可。

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

如何在控制器中模拟 Automapper (IMapper) 的相关文章

  • MVC。网络错误:初始化字符串的格式不符合从索引 0 开始的规范

    我的连接字符串是
  • 您使用什么工具和技术来查找死代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您使用哪些工具和技术来查找 NET 中的死代码 过去 我用 Obsolete 属性修饰方法 传递 tr
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • 在 2 个 .c 文件之间共享函数

    dir1有dir2 file1 c和file1 h dir2 有 file2 c 现在 如果我想在 file2 c 中访问 file1 c 中定义的函数 我需要在 file1 h 中声明它并在 file2 c 中包含 file1 h 这是一
  • OWIN AuthenticationOptions 在 mvc5 应用程序中运行时更新

    Hi 情况如下 我在 iis 7 上有一个带有 Identity 2 的 MVC 5 应用程序 该应用程序为多个网站提供服务 主机名是某些网站的关键 网站 另一个网站 等等 我决定在我的所有网站上使用谷歌外部登录 每个网站都应该是带有个人
  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 使用索引避免迭代器失效,维护干净的接口

    我创建了一个MemoryManager
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • VS2010中VSHost.exe不断启动

    我正在 VS2010 中使用一个包含大量项目的解决方案 但它不断变得无响应 我注意到的一件事可能是一条线索 尽管我尚未开始任何调试 但 MyApplicationName vshost exe 不断出现在进程列表中 也许每当构建发生时它就会
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • 第三方引用的 dll 未被复制来构建

    我有一个第三方 net dll 被我的 dll 类库项目 A 引用和使用 我的控制台应用程序项目 B 引用项目 A 我的问题是第三方 dll 没有被复制到控制台应用程序项目 B 的构建中 这里有什么问题呢 我的 dll 类库中引用的第三方
  • 如何在 C++ 中初始化嵌套类的构造函数

    我在初始化嵌套类构造函数时遇到问题 这是我的代码 include
  • 如何通过 Excel 互操作对象自动调整列大小?

    下面是我用来将数据加载到 Excel 工作表中的代码 但我希望在加载数据后自动调整列的大小 有谁知道自动调整列大小的最佳方法 using Microsoft Office Interop public class ExportReport
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • Task.Delay 到底是如何工作的?

    他们说 Task Delay 是一个异步 Thread Sleep 为了测试这一点 我写了下面的代码 我希望立即打印 One 然后 3 秒后将打印结果变量 15 2 秒后 将打印 Two 但似乎并非如此 一 不会立即打印 3 秒后打印 On
  • 预览MouseMove 与 MouseMove

    我有相当多的 XAML 经验 但最近我注意到我的大多数同事都使用预览鼠标移动代替鼠标移动事件 我一直用鼠标移动它对我很有帮助 但我忍不住问我什么时候应该使用预览鼠标移动什么时候鼠标移动 有什么区别 各自有什么优点和缺点等等 PreviewM

随机推荐

  • 如何在幻灯片revealjs Quarto中放大图表?

    我想zoom https quarto org docs presentations revealjs advanced html当我点击这张幻灯片时在图表上 我应该像动画一样 这是一些可重现的代码 title Zoom on graph
  • 如何优化打印两个整数中较大者和较小者之间的差异?

    可能是最简单的问题 输入由一系列 2 32 的无符号整数对组成 因此要求使用 64 位整数 对于每一对 任务是打印出较大整数和较小整数之间的差异 根据 最快的解决方案运行时间低于 0 01 秒 然而 我解决这个问题的所有尝试通常都在 0 0
  • 您多久会看到滥用 C# 速记 getter/setter 的情况?

    在 C 中 您可以用比其他语言更简单的方式创建 getter setter public int FooBar get set 这将创建一个无法直接寻址的内部私有变量 可以使用外部属性 FooBar 直接访问它 我的问题是 您多久会看到这种
  • 使用 ASP.Net MVC 实现 .Net OpenId

    我下载的样本是从DotNetOpenId http code google com p dotnetopenid 与我创建新应用程序时获得的 MVC 1 0 应用程序有不同的文件 我对 MVC 和 openId 很陌生 我遇到的所有示例都非
  • Nuxt js全静态动态页面,payload未定义

    我正在尝试动态生成页面 运行 nuxt generated 后 页面已成功创建 但是加载页面 使用 nuxt start 它说标题未定义 我在生成时在有效负载中发送 每个生成的页面都存在有效负载 js 但由于某种原因它无法工作 Page r
  • 用于进程间共享内存的非 Boost STL 分配器?

    由于我工作地点的政策 我无法使用高于 1 33 1 的 Boost 版本 也无法使用高于 4 1 2 的 GCC 版本 是的 它是垃圾 但我对此无能为力 Boost 1 33 1 不包含进程间库 也就是说 我的一个项目需要放置一个std m
  • php 中每个数据库扩展的字符串如何转义?

    在任何人对这个问题的性质做出结论之前 我已经知道了参数化 准备好的语句 http en wikipedia org wiki Prepared statements Parameterized statements并尽可能使用它们 不幸的是
  • 矩形位于另一个矩形内

    是否可以像图片上那样从 xml 创建可绘制对象 第一个矩形包含第二个矩形 如果是 请向我解释一下如何做 如果你想要简单的矩形 你可以使用图层列表 http developer android com guide topics resourc
  • 使用 karma 生成指针向量的输出

    我在使用 karma 为 boost shared ptrs 向量中保存的结构生成输出时遇到一些麻烦 我有一个使用无法编译的整数的小测试用例 我在想我可以使用 deref iterator 自定义点来处理这种情况 或者开箱即用的精神可能会注
  • 具有变化比例的 gganimate(轴限制)

    我想使用创建一个 gifgganimate 但我的轴范围在一帧中变化很大 这导致所有后续帧都被挤压 In ggplot2的方面 有一个选择scales free 有没有办法让每一帧都有自由比例gganimate 这是一个例子 library
  • React 将图像 src 作为对象返回

    我有一个这样定义的变量 const team name Foo bio FooBar image foo name Bar bio FooBar image bar 图像导入的位置如下 import foo from assets foo
  • BlackBerry Curve 8520 中的“隧道失败”异常

    手机型号 bb curve 8520 手机版本 4 6 1 314 运营商 印度航空公司 接入点 airtelgprs com 没有用户名和密码 我正在使用以下代码 String url http
  • React 本机应用程序中未找到类相对布局错误

    有没有人可以告诉我这个错误是在我将闪屏设置为我的反应本机应用程序后启动的 我的应用程序在添加启动屏幕之前正在运行 我认为布局文件夹中的 launch screen xml 文件有问题 打开错误SS https i stack imgur c
  • 让 PHPmailer 成为 Gmail 的“更安全的应用程序”

    我们可以在 PHPmailer 中实施哪些安全措施 使其成为更安全的 Gmail 应用程序 https support google com accounts answer 6010255 https support google com
  • Laravel / Eloquent whereIn 为 null

    如何应用 Laravel 的 Eloquent whereIn 使其包含 null 我试过了 User whereIn column null 1 2 gt get And User whereIn column DB raw null 1
  • PHP 会话未保存在内存缓存中

    使用 Amazon Linux 在 AWS 上运行使用 php 5 4 的应用程序 PHP 版本是 PHP 5 4 28 从AWS存储库安装的memcache lib是php54 pecl memcache 3 0 8 1 11 amzn1
  • 如何解决此错误:Py4JJavaError:调用 o70.showString 时出错?

    目前我正在开发 PySpark 和 DataFrame 我创建了一个数据框 from pyspark sql import import pandas as pd spark SparkSession builder appName Dat
  • 不支持请求方法“POST”

    以下配置引发错误 请求方法 POST 不受支持 我已经读到 存储 api 不会请求使用 POST 方法的对象作为缓存中的键 但我不知道如何添加路由 该路由体现了这些请求的 networkOnly 策略 规格 设置取自https github
  • 如何在 Win 10 UWP 项目上查找本地 IP 地址

    我目前正在尝试将管理控制台应用程序移植到 Windows 10 UWP 应用程序 我在通过以下控制台代码使用 System Net Dns 时遇到问题 如何获取设备IP 这是我尝试移植的控制台应用程序代码 public static str
  • 如何在控制器中模拟 Automapper (IMapper)

    我正在尝试为现有的 MVC Web 应用程序编写单元测试 我在自动映射器中面临一些问题 IMapper 每当使用地图函数时它都会返回null value 我的控制器代码 public class UserAdministrationCont