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

我正在将测试从 Codeception v2 升级到 v4。引导代码被引用acceptance.suite.yml并加载得很好。


_bootstrap.php到目前为止,在文件中可见有一个$settings由周围的 Codeception 代码设置的变量,它包含有关所有实时数据的信息,这些数据是为测试运行而配置的。


这个变量现在消失了。打印get_defined_vars()仅显示两个变量集,指向当前路径的字符串和引导程序文件名。


如何再次访问引导代码中的设置?


我看过 packagist,如果有一个分离模块的候选者,那将在这里使用,但没有一个候选者看起来很有前途。


编辑:我试过手动访问设置:


$settings = \Codeception\Configuration::suiteSettings('acceptance',

    \Codeception\Configuration::config());

然而,这只允许我访问“静态”设置,即基本上如相应的 YAML 文件中所写的那样。我需要的是“最终”设置,即评估环境后的设置。


哔哔one
浏览 116回答 1
1回答

12345678_0001

我通过从引导文件切换到扩展来解决了这个问题。例子:在 codeception.yml 中:extensions:&nbsp; &nbsp; enabled:&nbsp; &nbsp; &nbsp; &nbsp; - Bootstrapper该类可lib/Bootstrapper.php通过 Composer 的类列表功能找到composer.json:{&nbsp; &nbsp; "autoload": {&nbsp; &nbsp; &nbsp; &nbsp; "classmap": [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "lib/"&nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp; &nbsp; }}看起来像这样:<?phpuse Codeception\Events;use Codeception\Extension;class Bootstrapper extends Extension {&nbsp; &nbsp; public static $events = [&nbsp; &nbsp; &nbsp; &nbsp; Events::SUITE_BEFORE => 'beforeSuite',&nbsp; &nbsp; ];&nbsp; &nbsp; public function beforeSuite() {&nbsp; &nbsp; &nbsp; &nbsp; $module = 'PhpBrowser';&nbsp; &nbsp; &nbsp; &nbsp; if ($this->hasModule('WebDriver')) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $module = 'WebDriver';&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; /* expose info, if we're in real-browser context */&nbsp; &nbsp; &nbsp; &nbsp; define('IS_REAL_BROWSER', $module === 'WebDriver');&nbsp; &nbsp; &nbsp; &nbsp; /* make sure the helper functions are loaded */&nbsp; &nbsp; &nbsp; &nbsp; require_once __DIR__.'/../tests/acceptance/_helpers.php';&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP