在功能测试中使用全局变量(使用 Symfony 和 Codeception)
Posted
技术标签:
【中文标题】在功能测试中使用全局变量(使用 Symfony 和 Codeception)【英文标题】:Using globals in functional tests (with Symfony and Codeception) 【发布时间】:2018-09-30 20:49:03 【问题描述】:我想测试一下这个功能:
static protected function getContainerInterface()
global $kernel;
if (get_class($kernel) == 'AppCache')
/** @var \AppCache $cache */
$cache = $kernel;
$kernel = $cache->getKernel();
return $kernel->getContainer();
得到一个错误: 在 null 上调用成员函数 getContainer() 由这个字符串触发:
return $kernel->getContainer();
如何在代码接收中将全局 $kernel 对象传递给爬虫(即 FunctionalTester 的实例)?
【问题讨论】:
这是一种叫做“接口”的方法吗?这不是一个界面。接口是 php 中的一个关键字,根本不应该这样使用。 乔,我同意。谢谢你的建议。我正在“享受自己”重写遗留项目,并且有很多有趣的事情,这样的“接口调用者”只是一长串中的一个。 【参考方案1】:全局变量是一种不好的做法。我可以假设在运行测试时,codeception 创建了自己的测试内核,并且这个内核不能在全局范围内使用。这个地方需要重构
【讨论】:
重构遗留代码并从任何全局变量中清除它是个好主意以上是关于在功能测试中使用全局变量(使用 Symfony 和 Codeception)的主要内容,如果未能解决你的问题,请参考以下文章
自动化测试时需要使用python,请问如何理解python中的全局变量和局部变量?
Symfony 5 功能测试 - 缺少环境变量,getenv() 返回 false
Python入门-5函数:04变量的作用域-全局变量-局部变量-栈帧内存分析-效率测试