亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 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 關注
  • 128 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號