小编C. *_*ght的帖子

任务可用的最大线程数

我试图了解C#中的async-await功能.我编写了下面的代码来异步运行几个任务 - 目前他们所做的只是在一段时间后引发一个事件.

public class Program
{
    public static Stopwatch Watch = new Stopwatch();

    public static void Main(string[] args)
    {
        AsyncClass asyncClass = new AsyncClass();
        asyncClass.WaitSecondsAsyncCompleted += asyncClass_WaitSecondsAsyncCompleted;
        List<Task> tasks = new List<Task>();
        Watch.Start();
        for (int i = 1; i < 6; i++)
        {
            tasks.Add(asyncClass.WaitSecondsAsync(i, Watch));
        }
        Task.WaitAll(tasks.ToArray());
        Console.ReadLine();
    }

    private static void asyncClass_WaitSecondsAsyncCompleted(int i)
    {
        Console.WriteLine("{1} : Async Method Called: waited for {0} seconds", i, Watch.ElapsedMilliseconds);
    }
}

public class AsyncClass
{
    public event Action<int> WaitSecondsAsyncCompleted;

    public async Task …
Run Code Online (Sandbox Code Playgroud)

c# multithreading task threadpool async-await

8
推荐指数
1
解决办法
1万
查看次数

c#单元测试,模拟存储过程

在过去,当我实施单元测试时,我一直在努力为数据访问层设置"体面"的单元测试,因为它们通常将数据库作为外部依赖.在理想的世界中,我会模拟存储过程调用,以便删除外部依赖项.

但是,我一直无法解决如何使用MOQ模拟框架,或找到任何其他支持此框架的框架.相反,我已经恢复创建一个包含已知数据的脚本化测试数据库(这样我总能得到我期望的输出),但这与模拟该层略有不同.

任何人都可以建议如何模拟数据访问层的这一部分[我知道实体框架https://effort.codeplex.com/存在]?


细节 例如,如果我有以下方法

public object RunStoredProc()
{
    //Some Setup

    using (SqlConnection conn = new SqlConnection(CONNNECTION_STRING))
    {
        using (SqlCommand comm = new SqlCommand("storedProcName", conn))
        {
            conn.Open();
            comm.CommandType = CommandType.StoredProcedure;
            using (SqlDataReader reader = comm.ExecuteReader())
            {
                while (reader.Read())
                {
                    //Logic
                }
            }
        }
    }

    //Return object based on logic
}
Run Code Online (Sandbox Code Playgroud)

那么如何模拟存储过程输出以SQLDataReader包含指定的数据.在更高的级别,我可以模拟该RunStoredProc()方法 - 但这无助于我测试该方法中的逻辑是否正确.或者,我可以将其SQLReader剥离成另一种方法

public object RunStoredProc()
{
    //Some Setup

    List<object> data = GetData();
    //Logic

    //Return object based on logic
}

private List<object> …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing stored-procedures mocking system.data

7
推荐指数
1
解决办法
4819
查看次数