c# - 使用 Moq 模拟构造函数?

标签 c# .net unit-testing constructor moq

我有这样一组构造函数:

public BusinessObjectContext()
         : this(CloudStorageAccount.FromConfigurationSetting("DataConnectionString").TableEndpoint.ToString(),
                CloudStorageAccount.FromConfigurationSetting("DataConnectionString").Credentials) {}

public BusinessObjectContext(string dataConnectionString)
         : this(CloudStorageAccount.Parse(dataConnectionString).TableEndpoint.ToString(),
                CloudStorageAccount.Parse(dataConnectionString).Credentials) { }

public BusinessObjectContext(String baseAddress, StorageCredentials credentials) 
         : base(baseAddress, credentials) { } 

但是在测试/模拟时我需要没有任何连接字符串参数的对象。我该怎么做 - 最好是在最小起订量中?

这可能吗?

最佳答案

var myMockBOC = new Mock<BusinessObjectContext>(null, null);

这将为您的两个参数传递空值。

另一种方法是创建一个仅供测试使用的内部构造函数,并使用 InternalsVisibleTo允许您的测试程序集使用它。不幸的是,这有一个很大的缺点,如果你签署你的程序集,Moq is unable to use the constructor .不过,这应该会在 Moq 的 4.0 版本中得到解决。

关于c# - 使用 Moq 模拟构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2976018/

相关文章:

c# - 为什么读取进程启动的 server.js 中的证书会导致进程终止?

c# - 使用 C# 正则表达式排除字符串匹配

.net - 我能以某种方式在 Linux 上运行原始的 MS.Net Framework 4(也许使用 Wine)吗?

unit-testing - 我应该对一个类进行单元测试以获取 MEF 属性吗?

c# - Fluent NHibernate 无法在测试的 Debug模式下从 GAC 加载 MySql.Data

c# - 通过 XAML 将图像设置为按钮背景

c# - 使用不同的打印机托盘打印PDF C#

c# - 为什么我会收到有关版本和区域性似乎相同的程序集引用的警告

c# - 一段时间后重新连接到 QueueManager 时,在 MQ 客户端 (C#) 上收到错误原因代码 2059

unit-testing - RSpec 场景大纲 : Multiple Test Cases