问题描述
我需要一些设计建议。
我有一个应用程序,它将从各种来源读取数据并进行检查和比较。我的意图是将数据访问所需的所有依赖项(System.Data.SqlClient
等)包含在一组数据访问类(SqlImporter
、JSONImporter
等)中。其他需要数据的类将只使用这些类来完成工作。也许他们会传递连接字符串或其他信息。
但是,我需要对这些数据访问类进行单元测试。为了使它们可测试,我让我的数据访问类依赖于抽象/接口,然后传入具体的实现,以允许我从单元测试中传入 Mock 对象,类似于 Mocking SqlConnection,SqlCommand and SqlReader in C# using MsTest。
结果是这样的:
using System.Data.SqlClient;
public class SqlImport {
private IDbConnection conn;
public SqlImport(IDbConnection conn){
this.conn = conn;
}
}
我的问题是,所有使用这些数据访问类的类现在也需要依赖数据访问依赖项 (System.Data.SqlClient
)。这是否有点违背了拥有这些课程的目的?我的意思是,这对凝聚力有好处,但是...
我现在有一堂这样的课:
using System.Data.SqlClient;
using Importers;
public class Mapping {
public Mapping (){
}
public void LoadMappingFromDatabase(string connString){
SqlImport import = new SqlImport(new SqlConnection(connString));
// Do Stuff including using import to query db
}
}
这样的设计好吗?或者我最好直接查询 LoadMappingFromDatabase()
内的数据库,因为所需的依赖项已经在类中?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)