首页 > 解决方案 > 如何使用 C# 为 Snowflake 编写 MS 单元测试

问题描述

我正在使用 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 这样的方法?

你能帮我解决这个问题吗?

标签: c#.net.net-coresnowflake-cloud-data-platformsnowflake-schema

解决方案


避免与实现细节紧密耦合。专注于实现所需的逻辑并抽象出任何第 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();
}

这将允许在单独测试代码时模拟/存根抽象。(即:单元测试)


推荐阅读