Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C代码(Linq到sql)中,有没有办法获取两点之间检索到的所有数据_C#_Asp.net_Unit Testing_Linq To Sql_Mocking - Fatal编程技术网

C# 在C代码(Linq到sql)中,有没有办法获取两点之间检索到的所有数据

C# 在C代码(Linq到sql)中,有没有办法获取两点之间检索到的所有数据,c#,asp.net,unit-testing,linq-to-sql,mocking,C#,Asp.net,Unit Testing,Linq To Sql,Mocking,我的简历如下: 我在一个用C#Asp.Net开发的系统中工作(一个大的、巨大的、明确成长的系统)。我正在尝试创建一些单元测试来开始重构(相信,它需要重构(有些控制器有10k、12k行)。 问题是这个系统中的很多东西都与数据库相关(并且系统与数据库紧密耦合),数据库上下文在很多代码片段中实例化,而不是注入。 因此,我现在的重点是将一些数据模拟到本地MDB文件中,以重构代码并创建具有自己的MDB(具有所有数据库结构,但仅使用他将使用的数据)的单元测试 我是怎么想的?大概是这样的: [TestMeth

我的简历如下: 我在一个用C#Asp.Net开发的系统中工作(一个大的、巨大的、明确成长的系统)。我正在尝试创建一些单元测试来开始重构(相信,它需要重构(有些控制器有10k、12k行)。 问题是这个系统中的很多东西都与数据库相关(并且系统与数据库紧密耦合),数据库上下文在很多代码片段中实例化,而不是注入。 因此,我现在的重点是将一些数据模拟到本地MDB文件中,以重构代码并创建具有自己的MDB(具有所有数据库结构,但仅使用他将使用的数据)的单元测试

我是怎么想的?大概是这样的:

[TestMethod()]
public void AnyTest()
{
    var dbLogger = new DbLogger(); //this class is not created, it's just an example.
    dbLogger.Start();

     WorstWrittenMethodEver(); //this method will call any other methods insides, 
                               //a couple of then 
                               //and I really don't know the order and the
                               //complexity (much times very high), and this will probably
                               //instantiate the DataContext a lot of times and do
                               //a lot of data retrieval.

    db.StopLog();
    Console.WriteLine(db.DataRetrieved); //And in this line I will print all the tables 
   //and data retrieved between this two points.
}
之后,我将获取数据,模拟到一个MDB文件中,并重构上面的单元测试以获得真正的单元测试


还有其他方法吗?

看起来这不是一项很容易的任务。我认为您应该使用一些流行且经过测试的库或工具。我的建议是使用。它允许捕获所有SQL查询(还包括对LinqToSql的支持)。它有一个很好的UI和API,可以在代码中进行交互。实际上,要获取所有SQL查询数据,可以使用以下方法:

MiniProfiler.Current.GetSqlTimings();

哇!非常感谢,我认为,如果它不是我所需要的,它比我所需要的更接近。我将研究MiniProfiler并尝试使用它。谢谢提示:)