【发布时间】:2015-10-30 13:27:13
【问题描述】:
我有这个代码:
public static bool IsValidVoucher(string id)
{
//read tsv files
var temp1 = AppData.GetAppData("stringval");
// code that need to be tested
return true;
}
而且我喜欢创建单元测试,但是我怎样才能将 AppData.GetAppData("stringval") 模拟为我想要的任何值,以便我可以测试其余代码。
AppData 类是:
public class AppData
{
public static object GetAppData(string name)
{
//...
}
}
【问题讨论】:
-
您可以注入一个读取 AppData 的类,然后在单元测试中模拟该类并设置您需要的返回值,而不是硬编码“AppData.GetAppData”。
-
如果不进一步更改源代码,Moq 是不可能的。但是使用Typemock's Isolator 是可能的。但是隔离器不是免费的。
-
我放弃了我的答案,因为我相信它在这种情况下无济于事。无论如何,现在您知道表达式树有很大帮助!