在测试类中调用存储过程时,测试用例在模拟 CreateCommand() 方法时失败

While calling a stored procedure in a test class the test case is failing while mocking CreateCommand() method

提问人:Prerna_Bhatt 提问时间:3/16/2023 更新时间:3/16/2023 访问量:26

问:

我正在尝试为数据库调用创建测试用例

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 对象 任何知道我哪里弄错了.

C# 数据库 xUnit NullReferenceException 测试用例

评论


答: 暂无答案