- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在考虑在 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[]>
收藏。我 mock 了Read()
通过检查自定义集合的计数方法,
int count = -1;
var testData = ReadData(); //Custom collection
DataReaderInfoMock.Setup(x => x.DataReader.Read()).Returns(() => count < testData.Count() - 1).Callback(() => count++);
但是,我想不出在 Read()
下模拟实现的方法阻止,如果可能的话。
有什么办法可以测试吗?
最佳答案
您不能模拟扩展方法,但您可以编写自己的 IDataReader 实现以用作模拟。
像这样(我只写了你需要的方法,IDataReader还有很多):
class MockDataReader : IDataReader
{
private List<object[]> _data;
private int _current = -1;
public MockDataReader(List<object[]> data)
{
_data = data;
}
public int FieldCount
{
get
{
return _data.FirstOrDefault()?.Length ?? 0;
}
}
public int GetValues(object[] values)
{
object[] record = _data[_current];
for (int i = 0; i < record.Length; i++)
{
values[i] = record[i];
}
return record.Length;
}
public bool Read()
{
_current++;
return _current < _data.Count;
}
}
关于c# - 模拟 IDataReader 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37292594/
我有两种情况从IDataReader对象中提取信息 Case - 1 - 长度,计算序数然后解析字符串 public static string GetString(IDataReader rdr,
我正在编写一个类,它封装了使用 ADO.NET 从数据库中检索数据的复杂性。其核心方法是 private void Read(Action action) where T : class, new()
实际上不一定是 IDataReader . 我有一个类似这样的函数: public IEnumerable GetObjects() { IDataReader dr = GetSomeDataR
我有一个看起来像这样的 XML: Row 1 - Col 1 Row 1 - Col 2 Row 1 - Col 3 ...
出于某种原因,这段代码: MethodInfo iDataReaderIndexerProperty = typeof(IDataReader).GetProperties() .Single
我正在尝试创建一个“Helper”类,您只需在其中传递驱动程序和参数,该类就会为您执行连接和连接字符串组装。 我一直在使用 System.Data 的接口(interface),例如 IDataRea
这个问题在这里已经有了答案: Does casting create new object? (3 个答案) 关闭 4 年前。 假设我创建了一个数据读取器。 我的数据库类中有一个方法 - 以这种方式
如何使用泛型将 DataReader 对象映射到类对象? 例如我需要做以下事情: public class Mapper { public static List MapObj
谁能告诉我这两段代码的区别?为什么要使用 IDataReader? using (IDataReader reader = cmd.ExecuteReader()) { while (read
在使用 reader.Read(); 遍历行之前,是否有任何方法可以获取从 SQL 查询(从 IDataReader)返回的总行数? 最佳答案 没有。 IDataReader 是结果集的简单只进 Vi
我有一个 List有一百万个元素。 (它实际上是一个 SubSonic Collection 但它不是从数据库加载的)。 我目前使用 SqlBulkCopy 如下: private string Fa
我继承的典型查询执行模式是这样的: using (IDataReader r = query.ExecuteReader()) { while (r.Read()) { // etc.
我正在考虑在 IDataReader 上模拟一个扩展方法(在项目中使用) . ReadAll()时我想返回一个测试数据集合(下)被调用。 public static IEnumerable ReadA
我正在尝试确定代码库中是否存在明显的错误。 有问题的代码调用第三方 dll,它返回一个 IDataReader。如果代码使用读取器而不处理它,它不会显式返回到池中,对吗? 调用代码如下: IDataR
我正在为 map 实体和数据集使用 AutoMapper AutoMapper.Mapper.CreateMap(): 并且我在 Home 实体中有一个名为 MobileNumber 的属性,并且想在
我正在做一个大规模的插入/更新操作。 所以我正在使用 SqlBulkCopy。 SqlConnection myConnection = new SqlConnection(myConnectionS
我在窗口 C# vs05 上工作。我想通过 IDataReader 读取图像....在 oledb 中....我该怎么做假设我想从数据库列名称学生 ID 中读取 int 值然后我用下面的方式编写代码
我想从数据库中读取数据到列表。 我试过下面的代码 public List StoredProcedureForIList(string spName, params IDataParameter[]
我正在尝试将 SQL 数据库中的数据(1 个表中的 4 列)加载到一个列表中,到目前为止已经完成了 List FNameList = (from IDataRecord r in myReader
在使用 IDataReader 对象(DbDataReader)中包含的信息加载它后,我试图向 DataTable 添加一个新条目> 具体来说。加载顺利,我认为对数据库的查询是正确的。 尝试添加新行时
我是一名优秀的程序员,十分优秀!