Codeception Cept测试_bootstrap变量

时间:2014-08-26 21:15:04

标签: codeception

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

我在var_dump中做了_bootstrap.php,它确实在验收测试之前运行了一次,但是我的测试中没有变量。

我似乎找不到任何关于此的文件。

我实际上是在尝试初始化Faker实例以在我的测试中使用。

4 个答案:

答案 0 :(得分:4)

我发现这方面的文档非常令人困惑。我试图做同样的事情无济于事。所以我最终通过将它放在_bootstrap.php文件中来使用Fixtures:

use Codeception\Util\Fixtures;
use Faker\Factory;

$fake = Factory::create();
Fixtures::add('fake', $fake);

(您也可以使用单独的fixtures.php文件并将其包含在测试中。)

允许您获取faker对象或其他类似内容:

Fixtures::get('fake');

奇怪的是,如果你查看Fixtures docs它实际上提到使用Faker库在bootstrap文件中创建测试数据。

答案 1 :(得分:0)

我执行以下操作:

// _bootstrap.php

$GLOBALS['a'] = 5;

然后在我的测试中我称之为:

 // MyCest.php

    public function testItWorks(\Tester $I)
    {
        global $a;
        $I->fillField('description', $a);
    }

我没有对Cept文件做过多少工作,但可能会有类似的工作。

答案 2 :(得分:0)

在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");
}

注意:没有美元符号。仅用作'电子邮件'和'密码'

答案 3 :(得分:-1)

我转储了所有PHP变量并确认_bootstrap.php文件中设置的任何变量都不存在,并且在MyCept.php文件中不可用。所以我在MyCept.php的顶部添加了以下内容:

include '_bootstrap.php';

这使得_bootstrap.php中设置的变量可用。当然。