asp.net 直接连接到数据库的 Web 服务 Web 方法进行单元测试

本文关键字:Web 服务 方法 单元测试 数据库 net 连接 asp | 更新日期: 2023-09-27 18:36:49

我有一个 asp.net 的Web服务服务层,其中包含[WebMethod]。这些 Web 方法具有连接字符串,并且正在修改 dev db。没有单独的数据访问层。WebMethods 通过存储过程修改数据库。我想使用 nunit 对这些 Web 方法进行单元测试。但是无法找到一种在不修改数据库的情况下做到这一点的方法。我愿意修改我的服务层,以便完全分离数据访问层,然后对其进行单元测试。任何导致做这些事情的良好做法的线索都将不胜感激。

更新:我的 Web 服务正在被一个已建立的产品使用,这使得在分离 DAL 后很难进行构造函数依赖注入。

asp.net 直接连接到数据库的 Web 服务 Web 方法进行单元测试

解决方案直接在于单元测试的原则。创建实现接口的数据访问层,并使用依赖项注入在运行方案中使用实际代码,并使用模拟服务用于测试方案。

要测试的代码,需要与上面的代码和下面的代码隔离。然后,对于每个方案或方法,您准备一个测试,该测试将验证在此测试用例中,对于预期的输入数据,您是否获得了预期的输出数据。

您肯定必须更改 DAL 才能对此进行单元测试。你的单元测试不应该接触数据库,你应该创建一个存储库或其他一些抽象,你可以在测试中模拟它们。

所以有两种类型的测试,我想你可能会感到困惑。 单元测试只是可以测试的特定函数,不应依赖于外部系统。 您可以执行集成测试,因为 Web 服务与此数据库紧密耦合。 需要重构数据库函数并模拟对它的调用,以便能够正确测试服务。 完成此操作后,MSDN 将提供有关如何正确单元测试 Web 服务的步骤:https://msdn.microsoft.com/en-us/library/ms243399(v=vs.100).aspx