Hello world !
J'essaye de trouver une solution à l'exception levée dans mon pipeline CI de gitlab lors de l'execution des tests fonctionnels dans une image php:8.0-apache.
NB : Mes tests passe bien en local sans probleme.
Mon fichier config/packages/framework.yaml :
when@test:
framework:
test: true
session:
storage_factory_id: session.storage.factory.mock_file
mon image docker pour mon job de tests dans le pipeline CI:
phpunit:
image: php:8.0-apache
stage: 'Units/Functionals Tests'
services:
- name: mysql:latest
alias: mysql
variables:
MYSQL_ROOT_PASSWORD: toor
MYSQL_DATABASE: mysda_db
before_script:
- apt-get update && apt-get install -y git libzip-dev
- curl -sSk https://getcomposer.org/installer | php -- --disable-tls && mv composer.phar /usr/local/bin/composer
- curl -sSk https://get.symfony.com/cli/installer | bash && mv /root/.symfony/bin/symfony /usr/local/bin
- docker-php-ext-install mysqli pdo pdo_mysql zip
- symfony console d:d:d --if-exists --force --env=test
- symfony console d:d:c --env=test
- symfony console d:m:m --env=test -n
script:
- symfony php bin/phpunit --testdox
allow_failure: false
Ce que je veux
Executer des testFonctionnels basic WebTestCase dans un pipeline CI de gitlab
script :
class DemoFunctionalTest extends WebTestCase
{
public function testShouldDisplayDemo(): void
{
$client = static::createClient();
$client->followRedirects();
$crawler = $client->request('GET', '/demo');
$this->assertResponseIsSuccessful();
$this->assertSelectorTextContains('h1', 'Demo index');
}...
commande : symfony php bin/phpunit --testdox
Ce que j'obtiens
LogicException: You cannot create the client used in functional tests if the "framework.test" config is not set to true.
Pour chaque test ou j'essaye de créer un client : $client = static::createClient();
Demo Functional (App\Tests\DemoFunctional)
✘ Should display demo
│
│ LogicException: You cannot create the client used in functional tests if the "framework.test" config is not set to true.
│
│ /builds/ethicsforanimals1/site-administratif/vendor/symfony/framework-bundle/Test/WebTestCase.php:52
│ /builds/ethicsforanimals1/site-administratif/tests/DemoFunctionalTest.php:11
Merci à tous pour vos reponses.
Hello,
Peux-tu poster ton ficher phpunit.xml stp ?
As-tu bien configurer la variable d'environment APP_ENV sur test dans ce fichier ?
Bonjour Gulivert,
Chez moi c'est phpunit.xml.dist
je n'y ai pas toucher pour l'instant et APP_ENV est setté à test.
peut-etre faut-il absolument avoir un fichier nommer phpunit.xml
sans le dist à la fin ?
<?xml version="1.0" encoding="UTF-8"?>
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="tests/bootstrap.php"
convertDeprecationsToExceptions="false"
>
<php>
<ini name="display_errors" value="1" />
<ini name="error_reporting" value="-1" />
<server name="APP_ENV" value="test" force="true" />
<server name="SHELL_VERBOSITY" value="-1" />
<server name="SYMFONY_PHPUNIT_REMOVE" value="" />
<server name="SYMFONY_PHPUNIT_VERSION" value="9.5" />
</php>
<testsuites>
<testsuite name="Project Test Suite">
<directory>tests</directory>
</testsuite>
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">src</directory>
</include>
</coverage>
<listeners>
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
</listeners>
<!-- Run `composer require symfony/panther` before enabling this extension -->
<!--
<extensions>
<extension class="Symfony\Component\Panther\ServerExtension" />
</extensions>
-->
</phpunit>
Et le fichier config/packages/framework.yaml en entier :
# see https://symfony.com/doc/current/reference/configuration/framework.html
framework:
secret: '%env(APP_SECRET)%'
#csrf_protection: true
http_method_override: false
# Enables session support. Note that the session will ONLY be started if you read or write from it.
# Remove or comment this section to explicitly disable session support.
session:
handler_id: null
cookie_secure: auto
cookie_samesite: lax
storage_factory_id: session.storage.factory.native
#esi: true
#fragments: true
php_errors:
log: true
when@test:
framework:
test: true
session:
storage_factory_id: session.storage.factory.mock_file
Apres quelques recherche j'ai constaté que ceux qui avait la meme exception avait le fichier framwork.yaml dans config/packages/test/.
Donc je l'ai dupliquer dans ce dossier mais ça n'a pas resolu le pb.
J'ai desinstallé et réinstallé le package phpunit mais ça n'a rien changer.
Je suis un peu à court d'idée
Merci encore pour vos retours
Je fais remonter mon topic car mon soucis n'est toujours pas resolu.
@Grafikart, as-tu deja experimenter ce soucis ?
Bonjour,
J'avais la même erreur mais en local.
En faisant un dd de APP_ENV dans l'un de mes tests je me suis rendu compte que l'env est en dev car appliqué par mon docker-compose.yml qui empêche donc la surcharge de la conf dans phpunit.xml.dist.
En virant le APP_ENV de mon docker-compose plus de pb.
L'explication est en fait ici