A funkcionális tesztelést egy régi kódbázisba próbálom bevezetni különféle eszközökkel, amelyek közül az egyik a Codeception (2.2.0). Az elfogadási tesztek megfelelnek az alap bejelentkezési forgatókönyvnek:
public function login($name, $password)
{
$I = $this;
$I->amOnPage('/login');
$I->submitForm('.loginform', array(
'_username' => $name,
'_password' => $password
));
$I->see('User', '.navbar');
}
de amikor megpróbálok futtatni egy funkcionális tesztet ugyanazon forgatókönyv szerint, az nem sikerül
A [Exception] környezetpéldány már be van állítva
A verem nyomkövetését nézve a példányt regisztráló figyelőtől származik:
public function onKernelRequest() {
$this->getContainer()->get('environment');
}
amely a config.yml-ben található szolgáltatáshoz vezet:
environment:
class: MyApp\Environment
calls:
- [ setContainer, [ @service_container ] ]
az osztályra mutatva:
class Environment {
public function __construct() {
self::setInstance($this);
}
public static function setInstance(Environment $environment) {
if (null !== self::$instance) {
throw new \Exception('environment instance is already set');
}
self::$instance = $environment;
}
Hogyan lehet a legjobban megérteni, hogyan távolíthatom el a hibát a funkcionális teszteléssel? A kód anti-mintázatú, és át kell alakítani? Vagy a Codeception konfigurációmmal van a probléma?
class_name: FunctionalTester
modules:
enabled:
- Symfony2:
app_path: 'app'
var_path: 'app'
- Doctrine2:
depends: Symfony2
- \Helper\Functional
- Asserts
- Sequence
Ha további információra van szüksége, jelezze.
Frissítés
Megtaláltam ezt a választ, és a Symfony modulról PhpBrowserre váltva a tesztek sikeresek voltak. Az eredeti kérdés azonban – hogy hogyan futtassuk le a funkcionális tesztet a Symfony modul használatával – továbbra is fennáll.