我对单元测试比较陌生,对模拟完全陌生。我有一个包装 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;
}