使用 Moles 覆盖到 System.Configuration,而不是作为单元测试

本文关键字:单元测试 覆盖 Moles System Configuration 使用 | 更新日期: 2023-09-27 18:30:52

我正在考虑构建一个集中式服务,为经过正确身份验证的应用程序提供连接字符串。

为了使服务与正常进程保持兼容,我认为覆盖app.config或web.config中的System.Configuration ConnectionStrings将是一件好事。

我考虑过使用Moles来做到这一点,但我找到的唯一例子是UnitTests。

我真正想要的是 System.Configuration.ConfigurationManager 类的 Mole 重写,以便我可以专门重写 ConnectionStringsGet 方法来查找连接字符串的自定义样式。 如果未找到,则将调用传递给原始配置管理器代码,以便处理正常的连接字符串。

我还没有用 Moles 编写任何代码,因为我正在为如何开始这个想法挠头。 如果有人有关于如何开始的指示,我会拿着它去挖掘更多。

使用 Moles 覆盖到 System.Configuration,而不是作为单元测试

在这种情况下,

Moles 似乎并不真正支持尝试覆盖 System.Configuration。

我发现了几篇帖子,展示了自定义system.配置过程的有前途的方法。

首先是Andy Pook http://andypook.blogspot.com/2007/07/overriding-configurationmanager.html 的博客文章,其次是CodeProject文章,扩展了Andy http://www.codeproject.com/Articles/69364/Override-Configuration-Manager 给出的解决方案

这些文章对我的思考过程很有用。

你最好创建一个接口来从配置文件中获取数据,以及一个只包装静态成员的类。 然后,您可以执行自定义逻辑,并回退到标准静态方法。