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实例以在我的测试中使用。
答案 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中设置的变量可用。当然。