在测试api控制器时模拟存储库

时间:2019-02-19 15:12:16

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

我正试图熟悉使用最小起订量和一般的模拟。因此,我想测试一个使用程序集的api控制器,该程序集用作获取/更新数据等的存储库。
例如这样的结构。

HomeController
    Index
        Repository.GetSomeData  (returns JSON object)

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

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

1 个答案:

答案 0 :(得分:0)

当您模拟类似存储库的内容时,您将在存储库中存根方法以返回某些固定结果。调用存储库模拟中的这些方法,然后绕过实际方法,而只执行您已完成的工作。

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

模拟的全部目的是删除变量,因此您有意尝试进入“快乐之路”:将操作置于所需状态的一组内部响应,以便进行特定测试在进行。