我想在 <?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true"> //useLegacyV2RuntimeActivationPolicy for older .net version
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
</configuration>
上模拟一个扩展方法(在项目中使用)。我希望在调用IDataReader
(下面)时返回测试数据集。
ReadAll()
我的目标是返回自定义public static IEnumerable<object[]> ReadAll(this IDataReader reader)
{
while (reader.Read())
{
var values = new object[reader.FieldCount];
reader.GetValues(values);
yield return values;
}
}
集合。我通过检查自定义集合的计数来模拟IEnumerable<object[]>
方法,
Read()
但是,如果可能的话,我想不出在int count = -1;
var testData = ReadData(); //Custom collection
DataReaderInfoMock.Setup(x => x.DataReader.Read()).Returns(() => count < testData.Count() - 1).Callback(() => count++);
块下模拟实现的方法。
有什么方法可以测试吗?
答案 0 :(得分:2)
您无法模拟扩展方法,但您可以编写自己的IDataReader实现以用作模拟。
就像这样(我只写了你需要的方法,IDataReader还有更多):
{{1}}