【问题标题】:Is it okay to change application configuration from inside a Unit Test?可以从单元测试内部更改应用程序配置吗?
【发布时间】:2012-11-15 18:11:26
【问题描述】:

我正在为 CodeIgniter 编写一个库,在编写测试时,我需要检查当库或 CodeIgniter 的配置更改为我提供的各种选项时会发生什么。

最简单的方法似乎是使用Config class 即时获取和设置配置变量,它确实解决了问题。我只是不喜欢那个解决方案的外观。

在其他语言/框架中有什么等价物,可能面临的潜在问题是什么,以及如何完全避免所有这些?

【问题讨论】:

  • 如果您的测试通过或失败取决于测试代码无法控制的因素,根据定义,这并不是真正的单元测试...
  • 确实...也许我应该编写测试,以便在某某配置选项设置为某某时跳过特定测试。
  • 理想情况下,您应该重做一些事情,以便可以随意切换那些可以更改的内容,以用于具有已知行为的测试对象。除了通过将测试代码与应用程序的其余部分隔离来使测试更加可靠之外,它还有助于提高代码的模块化程度(或者,原因?)。

标签: php unit-testing codeigniter


【解决方案1】:

我不知道你的测试是什么,但我知道当我测试时(这是我工作过的大多数地方的政策,以及那些将他们的东西放在一起的地方)我尽量确保我的所有输入都是控制和验证,因为我确切地知道发生了什么以及应该发生什么。

因此,对于您的具体情况,如果可能的话,我会生成一个“测试”配置文件并使用它,以便您确切知道发生了什么以及应该出现什么。

编辑:为了更具体地回答您的问题,我认为动态更改配置值是不行的。

为什么?因为如果有什么东西坏了而你没有抓住它,突然你的配置值被改变并被部署到生产环境中……BOOM 崩溃了。显然情况更糟,但仍然

【讨论】:

    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多