在功能测试中使用全局变量(使用 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)的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 4使用实体的全局标准

自动化测试时需要使用python,请问如何理解python中的全局变量和局部变量?

Symfony 5 功能测试 - 缺少环境变量,getenv() 返回 false

Python入门-5函数:04变量的作用域-全局变量-局部变量-栈帧内存分析-效率测试

labview中 如何将一个全局变量在一个Vi中使用2次,其中一次作为读的状态,另一次为写的状态。谢谢!

Symfony 功能测试和会话持久性