c# - IDbConnection 的数据库连接模拟问题
问题描述
我编写了一个类,它在每个时间间隔根据条件获取记录并更新表。
我必须为数据库连接、插入和更新值编写测试用例。我想使用最小起订量或 C# 提供的任何框架来完成。
我查看了多个堆叠页面并遵循了它。然而,它没有成功。
我试图首先模拟数据库连接。这是代码。
跟踪服务.cs
namespace AutocancellationService
{
public partial class Trackservice : ServiceBase,Servicecalls
{
private Servicecalls connectionFactory;
public Trackservice(Servicecalls connectionFactory)
{
this.connectionFactory = connectionFactory;
}
public IDbConnection DatabaseConnection()
{
var connection = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
cnn = new SqlConnection(connection);
cnn.Open();
return cnn;
}
public void Autocancellation(object source, ElapsedEventArgs e)
{
try
{
lock (this)
{
ServiceLogFile("Database check :" + DateTime.Now);
DatabaseConnection();
if (cnn.State == ConnectionState.Open)
{
//select and update
}
}
}
}
保持模拟方法的接口 -
namespace AutocancellationService
{
public interface Servicecalls
{
IDbConnection DatabaseConnection();
}
}
测试方法 -
namespace AutocancellationServiceTests
{
[TestClass]
public class AutocancellationServiceTests
{
[TestMethod]
public void DatabaseconnectionTest()
{
var commandMock = new Mock<IDbCommand>();
commandMock
.Setup(m => m.ExecuteNonQuery())
.Verifiable();
var connectionMock = new Mock<IDbConnection>();
connectionMock
.Setup(m => m.CreateCommand())
.Returns(commandMock.Object);
var ConnectionMock = connectionMock.Object.State.ToString();
var connectionFactoryMock = new Mock<Servicecalls>();
connectionFactoryMock
.Setup(m => m.DatabaseConnection())
.Returns(connectionMock.Object);
var actual = connectionMock.Object;
//Assert.AreEqual(expected, actual);
}
}
}
当我尝试打印 connectionMock 时 - 我的连接状态为 Closed。并且测试用例失败了。我在我的代码中尝试了连接。它工作得很好。请求协助。
解决方案
推荐阅读
- html - 如何从 URL 获取客户 ID?
- foreign-keys - TypeORM 关系:只有 ID 而不是整个实例
- haskell - 当我想在haskell(使用monads)中应用函数组合时,如何使用monad中的<=<运算符?
- angular - 即使我定义了属性名称也会出现错误
- ios - 如何在不破坏复杂布局的情况下从容器视图中删除?
- r - 将生效日期列表转换为开始日期和结束日期
- javascript - firebase 身份验证标识符是破折号而不是电子邮件地址
- ruby-on-rails - 尝试使用 respond_to 从另一个控制器获取变量
- javascript - setSelectionRange 未按预期工作
- python - 有没有一种pythonic方法来重写以下代码块?列出理解?