当前位置:  开发笔记 > 编程语言 > 正文

没有Db的DbConnection使用内存中的DataSet(或类似)作为源

如何解决《没有Db的DbConnection使用内存中的DataSet(或类似)作为源》经验,为你挑选了1个好方法。

我正在尝试对几个.NET类进行单元测试(出于好的设计原因)需要DbConnections来完成他们的工作.对于这些测试,我在内存中有一些数据作为这些类的输入.

内存中的数据可以很容易地表示为DataTable(或包含该DataTable的DataSet),但如果另一个类更合适,我可以使用它.

如果我以某种方式神奇地能够获得表示内存数据连接的DbConnection,那么我可以构建我的对象,让它们对内存中的数据执行查询,并确保它们的输出符合预期. 有没有办法让DbConnection到内存中的数据? 我没有自由安装任何其他第三方软件来实现这一点,理想情况下,我不想在测试期间触摸磁盘.



1> n8wrl..:

您可以使用IDbConnection并模拟它,而不是使用DbConnection吗?我们做类似的事情,传递模拟一个DataSet.DataSet.CreateDataReader返回一个继承自DbDataReader的DataTableReader.

我们已经将DbConnection包装在我们自己的类似IDbConnection的接口中,我们已经添加了一个ExecuteReader()方法,该方法返回一个实现与DbDataReader相同接口的类.在我们的模拟中,ExecuteReader只返回DataSet.CreateDataReader提供的内容.

听起来有点迂回,但是建立一个可能有很多结果集的DataSet非常方便.我们在存储的procs之后命名DataTables,它们代表结果,我们的IDbConnection mock根据客户端调用的proc获取正确的Datatable.DataTable还实现了CreateDataReader,所以我们很高兴.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有