为了账号安全,请及时绑定邮箱和手机立即绑定

在 Codeception 引导程序代码中访问设置

在 Codeception 引导程序代码中访问设置

PHP
哔哔one 2023-03-04 18:02:54
我正在将测试从 Codeception v2 升级到 v4。引导代码被引用acceptance.suite.yml并加载得很好。_bootstrap.php到目前为止,在文件中可见有一个$settings由周围的 Codeception 代码设置的变量,它包含有关所有实时数据的信息,这些数据是为测试运行而配置的。这个变量现在消失了。打印get_defined_vars()仅显示两个变量集,指向当前路径的字符串和引导程序文件名。如何再次访问引导代码中的设置?我看过 packagist,如果有一个分离模块的候选者,那将在这里使用,但没有一个候选者看起来很有前途。编辑:我试过手动访问设置:$settings = \Codeception\Configuration::suiteSettings('acceptance',    \Codeception\Configuration::config());然而,这只允许我访问“静态”设置,即基本上如相应的 YAML 文件中所写的那样。我需要的是“最终”设置,即评估环境后的设置。
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

我通过从引导文件切换到扩展来解决了这个问题。例子:


在 codeception.yml 中:


extensions:

    enabled:

        - Bootstrapper

该类可lib/Bootstrapper.php通过 Composer 的类列表功能找到composer.json:


{

    "autoload": {

        "classmap": [

            "lib/"

        ]

    }

}

看起来像这样:


<?php


use Codeception\Events;

use Codeception\Extension;


class Bootstrapper extends Extension {


    public static $events = [

        Events::SUITE_BEFORE => 'beforeSuite',

    ];


    public function beforeSuite() {

        $module = 'PhpBrowser';

        if ($this->hasModule('WebDriver')) {

            $module = 'WebDriver';

        }


        /* expose info, if we're in real-browser context */

        define('IS_REAL_BROWSER', $module === 'WebDriver');


        /* make sure the helper functions are loaded */

        require_once __DIR__.'/../tests/acceptance/_helpers.php';

    }

}


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号