【问题标题】:How to write MS unit test for Snowflake using C#如何使用 C# 为 Snowflake 编写 MS 单元测试
【发布时间】: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 语句。

标签: c# .net .net-core snowflake-cloud-data-platform snowflake-schema


【解决方案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 的引用,这将仅在内存中执行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多