如何使用 C# 为 Snowflake 编写 MS 单元测试
Posted
技术标签:
【中文标题】如何使用 C# 为 Snowflake 编写 MS 单元测试【英文标题】:How to write MS unit test for Snowflake using C# 【发布时间】:2020-06-24 07:17:49 【问题描述】:我正在使用 Snowflake 连接器将我的 .NET Core 应用程序与 Snowflake 通信。 我的要求是为存储层编写 MS 单元测试
我的存储库类如下所示:
using (IDbConnection conn = new SnowflakeDbConnection())
conn.ConnectionString = ConnectionString;
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = $"SELECT * from TABLENAME";
var reader = cmd.ExecuteReader();
while (reader.Read())
--do some operation
conn.Close();
我是否需要对原始 Snowflake 帐户执行单元测试,或者是否有像 In-Memory 这样的方法?
你能帮我解决这个问题吗?
【问题讨论】:
那不是类,而是 using 语句。 【参考方案1】:避免与实现细节紧密耦合。专注于实现所需的逻辑并抽象出任何第 3 方的关注点。
创建一个简单的连接工厂抽象
public interface IDbConnectionFactory
IDbConnection CreateConnection();
一个简单的实现。
public class SnowflakeDbConnectionFactory: IDbConnectionFactory
public IDbConnection CreateConnection()
return new SnowflakeDbConnection();
存储库将明确依赖于工厂抽象并利用它
using (IDbConnection conn = factory.CreateConnection())
conn.ConnectionString = ConnectionString;
conn.Open();
IDbCommand cmd = conn.CreateCommand();
cmd.CommandText = $"SELECT * from TABLENAME";
var reader = cmd.ExecuteReader();
while (reader.Read())
//--do some operation
conn.Close();
这将允许在单独测试代码时模拟/存根抽象。 (即:单元测试)
【讨论】:
能否请您告诉我如何在 using 语句中获取工厂和 ConnectionString 的引用,这将仅在内存中执行?以上是关于如何使用 C# 为 Snowflake 编写 MS 单元测试的主要内容,如果未能解决你的问题,请参考以下文章
将 Snowflake ODBC 驱动程序与 MS Access 一起使用
如何在 Snowflake 中编写等效的 IF ELSE adhoc sql 查询
如何在 C# 中使用 OleDB 列出 MS Access 文件中的所有查询?