【问题标题】:Mock a repository while testing an api controller在测试 api 控制器时模拟存储库
【发布时间】:2019-02-19 15:12:16
【问题描述】:

我正在尝试熟悉使用 MOQ 和一般模拟。所以我想测试一个使用程序集的 api 控制器,该程序集用作获取/更新数据等的存储库。
例如这样的结构。

HomeController
    Index
        Repository.GetSomeData  (returns JSON object)

这个存储库类有一个接口,它是通过 .net 核心启动类注入的。在这种情况下,GetSomeData 方法通过调用 Db 执行多个步骤,以及从文件系统读取文件、解析文件并将其移至另一个文件夹。

问题:“模拟”存储库如何在不做“真实”对象所做的事情的情况下工作?我看到的所有例子都是简单的加法,返回字符串等。

【问题讨论】:

  • 可以分享控制器和仓库的源码和接口吗?

标签: unit-testing asp.net-core moq


【解决方案1】:

当您模拟您的存储库之类的东西时,您将存根存储库上的方法以返回一些预设结果。在存储库模拟上调用这些方法,然后绕过真正的方法,而只做你存根的事情。

基本上,您需要首先确定将使用哪些方法。然后,您应该根据您尝试进行单元测试的特定场景确定这些方法应该返回的适当响应。然后,您使用这些响应为这些方法创建模拟并添加存根。

模拟的全部意义在于删除变量,因此您有意尝试进入“快乐路径”:将操作置于您需要的状态以进行特定测试的一组内部响应'正在指挥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2021-01-27
    • 2022-01-12
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多