gpt4 book ai didi

c# - 单元测试,具有许多数据库调用的项目

转载 作者:行者123 更新时间:2023-11-30 13:03:46 25 4
gpt4 key购买 nike

我有一个关于单元测试的问题。目前我有一个调用许多 SP 的大型项目,并且大多数方法都没有得到返回。实际上,它是许多 SQL 调用的大型包装器。逻辑不多,因为它全部保存在 SP 中,它还有一些内联 sql 部分。

我需要对这个 c# 项目进行单元测试,但越来越明显的是,单元测试将毫无意义,因为它会调用许多 SP,所有这些都将被模拟。我是不是担心我想错了。

我的问题是有没有人遇到过这个问题,他们做了什么?如果我改为进行数据库单元测试,任何见解都会有很大帮助。

谢谢。

最佳答案

单元测试不应触及数据访问层,因为那将是集成测试/系统测试。您可以测试的是您的项目实际上调用了您的数据访问层。这样做会让您高枕无忧,因为在重构过程中单击按钮总是会调用数据访问层。

//Arrange
var dataAccessMock = new Mock<IDataAccessMock>();
dataAccessMock(da => da.ExecuteSomething());

IYourApplication app = new YourApplication(dataAccessMock);

//Act
app.SomeProcessThatCallsExecuteSomething("1234567890");

/Assert
dataAccessMock.Verify(dp=>da.ExecuteSomething(), Times.Once());

请注意,在此示例中我使用的是 Moq

根据您的喜好对其进行测试后,您可以专注于集成测试以验证您的存储过程是否按预期工作。为此,您可能需要做大量工作来附加已知状态的数据库、运行您的存储过程,然后还原或删除您的数据库,以便测试可重复。

关于c# - 单元测试,具有许多数据库调用的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11762800/

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