Кодексация Проверяемые тесты _bootstrap variables
Состояние кода по умолчанию _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 для использования в моих тестах.
Ответы
Ответ 1
Я считаю, что документация по этому вопросу довольно запутанна. Я пытался сделать то же самое безрезультатно. Поэтому я закончил использование Fixtures, поместив его в файл _bootstrap.php:
use Codeception\Util\Fixtures;
use Faker\Factory;
$fake = Factory::create();
Fixtures::add('fake', $fake);
(Вы также можете использовать отдельный файл fixtures.php и включить его в свой тест.)
Это позволяет вам получить объект faker или что-то еще подобное:
Fixtures::get('fake');
Странно то, что если вы посмотрите на Fixtures docs, он фактически упоминает использование библиотеки Faker для создания тестовых данных в файле начальной загрузки.
Ответ 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", "[email protected]");
define("password", "my_secure_pass")
Используйте его следующим образом:
public function testValidLogin(AcceptanceTester $I)
{
$I->fillField(loginPage::$username, email);
$I->fillField(loginPage::$password, password);
$I->click("LOG IN");
}
ПРИМЕЧАНИЕ: никаких знаков доллара. используйте только как "email" и "password"
Ответ 4
Я сбросил все переменные PHP и подтвердил, что любые переменные, установленные в файле _bootstrap.php, не существуют и недоступны в файле MyCept.php. Поэтому я прибегал к добавлению следующего в MyCept.php:
include '_bootstrap.php';
Это делает переменные, установленные в _bootstrap.php доступными. Конечно.