问题描述
|
我必须在此类上创建测试。有人可以帮忙吗?
public class Db {
private System.Data.SqlClient.SqlConnection myConn;
public Db(string connString)
{
myConn = new System.Data.SqlClient.SqlConnection(connString);
}
public bool Connected
{
get { return (myConn.State == ConnectionState.Open); }
}
public void Connect()
{
myConn.Open();
}
public void Disconnect()
{
myConn.Close();
}
}
是的,连接字符串可以作为构造函数参数传递。
问候
雅虎
解决方法
您唯一的依赖项(SqlConnection)是不可注入的,因此首先要做的是至少让Poor Man的依赖项注入构造函数链接到SqlConnection作为参数传递。除此之外,我看到此类几乎没有做,只是充当连接的包装器。我可能会将连接抽象为IDbConnection,并在需要时对其进行模拟,例如对Connected方法的测试将是这样的:
IDbConnection conn = mockery.CreateMock<IDbConnection>();
Expect.Call(connection.State).Return(ConnectionState.Open);
mockery.ReplayAll();
Assert.IsTrue(db.Connected);
mockery.VerifyAll();
连接/断开连接可以用类似的方式来模拟。