Codeception Cept 测试 _bootstrap 变量
Posted
技术标签:
【中文标题】Codeception Cept 测试 _bootstrap 变量【英文标题】:Codeception Cept tests _bootstrap variables 【发布时间】:2014-10-20 08:03:18 【问题描述】:Codeception 默认_bootstrap.php
文件状态:
<?php
// Here you can initialize variables that will be available to your tests
所以我想在其中初始化一个变量:
<?php
$a = 5;
但是,当我使用它时,我的 SomeAcceptanceCept
:
<?php
// ....
$I->fillField('description', $a);
我得到:ErrorException: Undefined variable: a
我在_bootstrap.php
中做了var_dump
,它确实在验收测试之前运行了一次,但它的变量在我的测试中不可用。
我似乎找不到任何关于此的文档。
我实际上是在尝试初始化 Faker 实例以在我的测试中使用。
【问题讨论】:
【参考方案1】:我发现这方面的文档相当混乱。我试图做同样的事情无济于事。所以我最终通过将它放在 _bootstrap.php 文件中来使用 Fixtures:
use Codeception\Util\Fixtures;
use Faker\Factory;
$fake = Factory::create();
Fixtures::add('fake', $fake);
(您也可以使用单独的 fixtures.php 文件并将其包含在您的测试中。)
这可以让您获得伪造的对象或其他类似的东西:
Fixtures::get('fake');
奇怪的是,如果您查看Fixtures docs,它实际上提到了使用 Faker 库在引导文件中创建测试数据。
【讨论】:
这真令人气愤。 _bootstrap.php 还不如什么都不做。请记住在所有文件中设置您的命名空间,例如。use Codeception\Util\Fixtures;
在 _bootstrap.php 和您的 *Cept.php 中。当然,您可以轻松地在每个 *Cest.php 文件的顶部运行 include
,例如 @Jason 和 @Duncan 都建议。
我要补充一点,坚持使用 _bootstrap.php 并实施@Jason 的修复提供的一个好处是能够轻松地从文件夹中的 Cepts 访问变量。否则你的包含会很乱,例如。 include('../../_bootstrap.php')
或 include('../_bootstrap.php')
。如果您决定重构测试文件夹结构,那将是一件痛苦的事。【参考方案2】:
我执行以下操作:
// _bootstrap.php
$GLOBALS['a'] = 5;
然后在我的测试中我这样称呼它:
// MyCest.php
public function testItWorks(\Tester $I)
global $a;
$I->fillField('description', $a);
我没有对 Cept 文件做太多工作,但可能类似的东西会起作用。
【讨论】:
【参考方案3】:在 bootstrap.php 中这样定义:
<?php
// This is global bootstrap for autoloading
define("email", "someone@abc.com");
define("password", "my_secure_pass")
像这样使用它:
public function testValidLogin(AcceptanceTester $I)
$I->fillField(loginPage::$username, email);
$I->fillField(loginPage::$password, password);
$I->click("LOG IN");
注意:没有美元符号。仅用作“电子邮件”和“密码”
【讨论】:
【参考方案4】:我转储了所有 PHP 变量并确认 _bootstrap.php 文件中设置的任何变量都不存在,并且在 MyCept.php 文件中不可用。所以我求助于在 MyCept.php 的顶部添加以下内容:
include '_bootstrap.php';
这使得 _bootstrap.php 中设置的变量可用。当然。
【讨论】:
'如何使 _bootstrap.php 文件中设置的变量在 Codeception Cept 文件中可用?'以上是关于Codeception Cept 测试 _bootstrap 变量的主要内容,如果未能解决你的问题,请参考以下文章