我有一个test.php,我运行单元测试用例。我想要的是'include'
某些.php文件,但是当我这样做时,它们就会被运行。例如,我只需要从.php文件中访问某些变量,函数,但整个.php文件都会运行。在我的例子中,.php是一个巨大的文件。 'require'
也发生了同样的事情。
是否可以在不运行它们的情况下访问这些.php方法,变量和函数?
谢谢!
答案 0 :(得分:3)
当包含代码时会发生什么,它作为整个脚本的一部分执行。你没有修好这个"一些黑客,包括代码而不执行它。您可以通过将代码组织为可调用单元来修复它。
事实上,单元测试是一种伟大的方式,可以开始考虑如何组织代码。你究竟在测试什么?一类?一个功能?或者只是某个脚本中某些顶级代码的随机块?
如果是后者,您现在看到了问题。通过包含该代码,您可以执行它。这超出了正在运行的测试的上下文。相反,您希望该代码位于某种可调用的单元中。一个类,或者至少是一个函数。
例如,假设您有一个PHP文件,其中包含执行各种任务的顶级代码。正如您所遇到的那样,当您包含该代码时,所有这些任务都会立即执行。但是,如果您将该文件中的代码组织成一组函数,那么通过包含它您正在做的就是定义函数。然后,使用代码(在这种情况下为单元测试)可以按照受控和可预测的方式按需执行这些功能。
当您包含 define 结构时,所有代码都应该执行。然后顶级消费代码应该使用这些结构。将所有逻辑放入顶级代码使其无法实现且无法管理。
答案 1 :(得分:0)
我得到了帮助。我要做的是创建一个新的.php文件,其中包含我要测试的所需函数和方法。
更新:似乎我需要重构我的代码,以便我将从其他.php文件中调用所需的函数和类。这样我就可以包含'如果没有他们被执行我想要什么。
谢谢大家的帮助。