【发布时间】:2010-11-28 19:10:53
【问题描述】:
我对单元测试比较陌生,对模拟完全陌生。我有一个包装 DbProvider 工厂的数据库类,我想在不连接到数据库的情况下为其创建单元测试。
我将如何模拟 DbProvider 工厂,以便我可以将其传入以测试我的课程?我还需要模拟 DbConnection、DbCommand 等吗?我的代码的一个小示例如下:
public Database(DbProviderFactory dbProviderFactory) {
Provider = dbProviderFactory;
}
public int UpdateRecords(string sql, CommandType type, params DbParameter[] parameters) {
int numberOfRecordsUpdated;
using (var connection = CreateConnection()) {
// Add ConnectionString
connection.ConnectionString = ConnectionString;
// Create command to hold the update statment
using (var command = CreateCommand()) {
try {
command.Connection = connection;
command.CommandType = type;
command.CommandText = sql;
// Add Parameters
foreach (var parameter in parameters) {
command.Parameters.Add(parameter);
}
// Open Connection
connection.Open();
// Execute SQL
numberOfRecordsUpdated = command.ExecuteNonQuery();
} finally {
command.Parameters.Clear();
}
}
}
return numberOfRecordsUpdated;
}
【问题讨论】:
-
你使用或计划使用什么模拟框架?
-
那还没有定论。我听说过很多关于 Rhino Mocks 的事,但也听说过关于 Moq 的好消息。当我说我不熟悉嘲弄时,我的意思是幼稚。
标签: c# unit-testing mocking dbproviderfactories