已经发布了几个关于依赖注入的具体问题的问题,例如何时使用它以及它有哪些框架.然而,
什么是依赖注入以及何时/为什么应该或不应该使用它?
language-agnostic design-patterns dependency-injection terminology
我已经接近一个新项目的开始了(喘气!)我第一次尝试将单元测试包含在我的项目中.
我自己设计一些单元测试时遇到了麻烦.我有一些方法很容易测试(传入两个值并检查预期的输出).我有代码的其他部分正在做更复杂的事情,比如对数据库运行查询,我不知道如何测试它们.
public DataTable ExecuteQuery(SqlConnection ActiveConnection, string Query, SqlParameterCollection Parameters)
{
DataTable resultSet = new DataTable();
SqlCommand queryCommand = new SqlCommand();
try
{
queryCommand.Connection = ActiveConnection;
queryCommand.CommandText = Query;
if (Parameters != null)
{
foreach (SqlParameter param in Parameters)
{
queryCommand.Parameters.Add(param);
}
}
SqlDataAdapter queryDA = new SqlDataAdapter(queryCommand);
queryDA.Fill(resultSet);
}
catch (Exception ex)
{
//TODO: Improve error handling
Console.WriteLine(ex.Message);
}
return resultSet;
}
Run Code Online (Sandbox Code Playgroud)
此方法基本上包含从数据库中提取一些数据所需的所有必要部分,并返回DataTable对象中的数据.
第一个问题可能是最复杂的问题:在这样的情况下我应该测试什么?
一旦解决了问题,是否要模拟数据库组件或尝试对实际数据库进行测试.
database testing integration-testing unit-testing data-access-layer
我有一个静态类,它调用静态Logger类,
例如
static class DoesStuffStatic
{
public static void DoStuff()
{
try
{
//something
}
catch(Exception e)
{
//do stuff;
Logger.Log(e);
}
}
}
static class Logger
{
public static void Log(Exception e)
{
//do stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
如何将Logger注入我的静态类?
注意:我已经通过示例阅读了.NET中的依赖注入?,但这似乎使用实例记录器.
我试图围绕WCF扭曲我的想法和依赖注入是一个令我困惑的一点.
我的问题基本上是:WCF是否支持开箱即用的依赖注入,或者是否必须依赖某些外部框架?
如果除了WCF之外只有一种方法可以使用它,你能给我一个简单例子的链接吗?
我正在研究ASP.net MVC 3.0应用程序.我使用的MSTest一起Moq进行单元测试.我已经为我的控制器编写了所有测试方法并运行了那些测试,结果很成功.
现在,我怀疑我是否已经正确地进行了单元测试.因为,几乎我的大多数控制器操作都包含数据库调用.
我不嘲笑他们,我只是嘲笑Session和Request使用Moq的对象.
是否真的有必要模拟数据库调用,因为单元测试意味着测试单个代码单元?我认为带有数据库调用的单元测试控制器违反了上述声明.
如果是这样,任何人都可以解释我如何模拟数据库调用吗?我没有使用任何实体框架.
Updated2:
[httppost]
public void AjaxSave(Model m)
{
m.update(); // Database call
}
Run Code Online (Sandbox Code Playgroud) 我在API中有一个类,有一个静态方法,用于验证和记录详细信息.任何指导如何注入ILogger接口请.
public class ValidateDataInAPI
{
public static bool IsValid(string data)
{
//do something
If(error)
{
_logger.Error("Log error as implemented by caller");
}
}
}
Run Code Online (Sandbox Code Playgroud) 嗨,
我对.net框架中的IoC/DI框架知之甚少.任何人都可以通过C#中的一些示例向我提供详细解释IoC/DI的链接吗?我想通过它,并对这些框架有更多的了解.
这样我就可以获得知识,在哪里以及如何使用这些框架对于实现项目非常有用.
NRK
c# ×4
unit-testing ×3
.net ×2
asp.net-mvc ×2
database ×1
frameworks ×1
moq ×1
mstest ×1
static ×1
terminology ×1
testing ×1
wcf ×1