php - Codeception 引导代码中的访问设置
问题描述
我正在将测试从 Codeception v2 升级到 v4。引导代码被引用acceptance.suite.yml
并加载得很好。
_bootstrap.php
到目前为止,在文件中可见有一个$settings
由周围的 Codeception 代码设置的变量,它包含有关所有实时数据的信息,这些信息是为运行测试而配置的。
这个变量现在消失了。打印get_defined_vars()
只显示两个变量集,指向当前路径的字符串和引导文件名。
如何再次访问引导代码中的设置?
我看过 packagist,如果有一个分离模块的候选者,这将在这里使用,但没有一个候选者看起来很有希望。
编辑:我尝试手动访问设置:
$settings = \Codeception\Configuration::suiteSettings('acceptance',
\Codeception\Configuration::config());
但是,这只允许我访问“静态”设置,即基本上按照相应的 YAML 文件中的内容进行设置。我需要的是“最终”设置,即评估环境后的设置。
解决方案
我通过从引导文件切换到扩展解决了这个问题。例子:
在 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';
}
}
推荐阅读
- php - 如何在codeigniter中存储会话终身?
- java - Java Web Start Swing App如何显示servlet信息?
- kubernetes - 使用 kubectl rollouts 更新我的图像,但还需要将我的部署对象保留在版本控制中
- r - LDA - 我如何对原始文档主题分配计数进行标准化和“添加平滑常数”?
- in-app-purchase - 为什么不登录会导致错误“Google Play 应用内计费 API 版本低于 3”
- winforms - Parent 如何在 System.Windows.Forms 中工作
- excel - 如何使用 VBA 从特定子文件夹打开 xlsm 文件?
- javascript - 通过按下按钮使用 javascript 缩进文本
- java - Android ConnectivityManager NetworkCallback 崩溃
- c++ - 波形控件 Touchgfx