【发布时间】:2016-03-28 14:19:05
【问题描述】:
我有一个名为 A 的项目,其中有一个名为 ClassA 的类。 ClassA 有一个名为 ReadBlock() 的方法,它创建一个 CloudBlockBlob 对象并调用其中一个方法。
CloudBlockBlob 是一个位于 Microsoft.WindowsAzure.Storage.Blob 命名空间中的类,该命名空间位于 Microsoft.WindowsAzure.Storage.dll 中.
我的项目 A 有一个名为 A.Tests 的单元测试项目。 现在,我想测试方法 ReadBlock()。为了测试它,我需要模拟 CloudBlockBlob 对象并拦截对其方法的调用,返回自定义值并验证方法是否被调用。
- 如何模拟完全在方法中创建的对象?
- 我能否以某种方式更改项目 A 的 dll 引用并将其引用到创建模拟对象而不是真实对象的模拟 dll 中?
- 我能否用我自己在 A.TestsA 对 Microsoft.WindowsAzure.Storage.Blob 内的类的调用/strong> 上课?
更新: 问题是我是否可以在不修改项目 A 的代码的情况下做到这一点。
谢谢!
【问题讨论】:
-
最好为 CloudBlockBlob 创建一个非常简单的可模拟包装器,以提高代码的可测试性并使用依赖反转注入它。
-
问题是我是否可以在不修改项目A的代码的情况下做到这一点?我知道一种选择是从外部注入 ICloudBlob。
-
啊,好吧,你没有在问题中指定..
标签: c# unit-testing mocking moq azure-blob-storage