我想实现一些单元测试到遗留的PHP应用程序。单元测试遗留的PHP类与沉重的数据库依赖
已经有许多与此挑战,但特别是对于这个问题,我目前正在在管理应用程序配置一个小班。
该类的界面非常简单;它执行以下操作:
- 构造函数调用Populate方法,该方法使用我们的Recordset类从数据库加载所请求模块的配置。
- Get方法,返回指定的配置值。
- 设置方法,它将配置值设置在内存中。
- 保存方法,它将配置更新写回数据库。
测试get/set方法很简单;他们直接映射到私有数组,并且可以像您期望的那样工作。
我遇到的问题是测试数据库处理。该类使用配置表(模块名称,语言等)上的许多字段来确定要加载的配置项以及优先级。为此,它构建了一系列精心设计的SQL字符串,然后直接调用数据库以获取正确的配置数据。
我不知道如何去写一个单元测试此。除了Get/Set方法之外,该类几乎完全包含构建SQL字符串并运行它们。
我看不出与要走一段路理智测试不实际运行它反对真正的数据库,所有的问题 - 如果不出意外,在配置装载机的复杂性将意味着我需要至少有七个或八个测试数据库填充了稍微不同的配置。看起来这将是难以管理和脆弱的,这将有点失败。
任何人都可以建议我应该从这里出发?是否可以单元测试这种类?
非常感谢。
感谢您的回答。意外考虑到问题的年龄。:-)自从发布这个问题以来,我最终做了一个相当大规模的重构练习,主要是为了让所有代码进入可测试状态。那是前一阵子,而且一切都很顺利。但是你给出的建议很好,我会给你+1并接受答案。感谢您为帮助而努力。 – SDC