提问人:Prerna_Bhatt 提问时间:3/16/2023 更新时间:3/16/2023 访问量:26
在测试类中调用存储过程时,测试用例在模拟 CreateCommand() 方法时失败
While calling a stored procedure in a test class the test case is failing while mocking CreateCommand() method
问:
我正在尝试为数据库调用创建测试用例
private readonly Func<Repositories, IAPJQueryDbFactory> funcQuery = (RepositoryEnum) =>
{
var mockDbParameterCollection = new Mock<IDataParameterCollection>();
var mockDataReader = new Mock<DbDataReader>();
var mockDbConnection = new Mock<DbConnection>();
var mockDbCommand = new Mock<IDbCommand>();
var mockdbCommand = new Mock<DbCommand>();
var mockDataBase = new Mock<Database>("abc", new Mock<DbProviderFactory>().Object);
var dataAccessHelper = new Mock<IQueryDbFactory>();
var emptyStr = string.Empty;
var mockIQueryRepository = new Mock<IQueryRepository>();
mockDataBase.Setup(x => x.CreateConnection()).Returns(mockDbConnection.Object);
mockDbConnection.Setup(x => x.CreateCommand()).Returns(mockdbCommand.Object);
mockDbCommand.SetupGet(x => x.Parameters).Returns(mockDbParameterCollection.Object);
dataAccessHelper.Setup(x => x.Database).Returns(mockDataBase.Object);
mockDataReader.Setup(x => x["StudentName"]).Returns(string.Empty);
mockDataReader.Setup(x => x["Id"]).Returns(0);
mockDataReader.Setup(x => x["Class"]).Returns(0);
mockDataReader.Setup(x => x["Address"]).Returns(string.Empty);
mockDataReader.SetupSequence(x => x.Read()).Returns(true).Returns(false);
return dataAccessHelper.Object;
};
它失败了:
mockDbConnection.Setup(x => x.CreateCommand()).Returns(mockdbCommand.Object);
这是主文件中的实例,它从 CreateCommand() 方法获取 null 值:
using (var connection = _queryDbFactory.Database.CreateConnection())
{
if (connection.State != ConnectionState.Open)
connection.Open();
using (var dbCommand = connection.CreateCommand())
{
dbCommand.CommandType = CommandType.StoredProcedure;
dbCommand.CommandText = "StudentRecords";
}
此行获取 null 值:
using (var dbCommand = connection.CreateCommand())
当我尝试调试该方法返回null时 知道我哪里弄错了
当我尝试调试该方法返回 null 时。我希望该方法返回模拟 DbCommand 对象 任何知道我哪里弄错了.
答: 暂无答案
评论