gpt4 book ai didi

c# - 如何模拟 OracleConnection 和 OracleCommand?

转载 作者:太空狗 更新时间:2023-10-29 20:06:14 27 4
gpt4 key购买 nike

对于我的测试,我需要模拟数据客户端,在我的例子中它们是 Oracle。

我已经创建了我的数据访问层以允许传入:

public static Int32? GetUserRoleId(string userName, OracleConnection cn, OracleCommand cmd)

我正在使用 Moq,但如果需要我可以切换到另一个框架,当我像这样创建 Mock 对象时:

Mock<OracleConnection> mockOracleConnection = new Mock<OracleConnection>();
Mock<OracleCommand> mockOracleCommand = new Mock<OracleCommand>();

我收到这个错误:

Failure: System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class.

结论:这比我想象的要简单!像这样模拟 DAL 层函数:

mockDao.Setup(a => a.GetUserRoleId(userName, It.IsAny<OracleConnection>(), It.IsAny<OracleCommand>())).Returns(1);

最佳答案

您可以进行更改以使用 IDbConnection 和 IDbCommand(使用接口(interface)并有一个工厂来提供主要代码中的真实对象和测试中的模拟对象——通常使用依赖注入(inject))

Moq 只能模拟接口(interface)和虚拟方法。

关于c# - 如何模拟 OracleConnection 和 OracleCommand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3728412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com