Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][SF4] Problem z wykonaniem komendy z konsoli
Forum PHP.pl > Forum > PHP > Frameworki
damianooo
W Symfony 4.4.2 po wykonaniu komendy: sudo php bin/console doctrine:fixtures:load otrzymuje komunikat:

  1. There are no commands defined in the "doctrine:fixtures" namespace.
  2.  
  3. Did you mean one of these?
  4. doctrine
  5. doctrine:cache
  6. doctrine:database
  7. doctrine:generate
  8. doctrine:mapping
  9. doctrine:migrations
  10. doctrine:query
  11. doctrine:schema
  12.  
  13. You may be looking for a command provided by the "DoctrineFixturesBundle" which is currently not installed. Try running "composer require
  14. doctrine/doctrine-fixtures-bundle --dev".


mimo tego ze w pliku composer.json mam:

  1. "require": {
  2. "php": "^7.1.3",
  3. "ext-ctype": "*",
  4. "ext-iconv": "*",
  5. "doctrine/doctrine-fixtures-bundle": "^3.3",


a takze w pliku conig/bundles.php tak:

  1. Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
  2. Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle::class => ['all' => true],
  3. ];


jednak co ciekawe jak wykonam komende
  1. sudo php bin/console

to nie widze na liscie dotepnych komend komendy
  1. doctrine:fixtures


prosze o podpowiedz co jest nie tak bo juz nie mam pomyslow .
ohm
bin/console --env=dev?
damianooo
---------------------------------

Ok wiem co bylo nie halo.
W .env mialem ustawione:

APP_ENV=prod

zmienilem na

APP_ENV=dev

i jest ok .

Poprzestawialem cos ostatnio jak dodalem drugi plik .env

Nie zajarzylem chyba rozdzialu z testami jednostkowymi dla metod dostepowych do bazy danych
https://symfony.com/doc/4.4/testing/database.html

chcialem skonfigurowac druga baze aby testy dla tych metod dzialaly.

Wiesz moze jak to powinno wygladac ?
Pyton_000
Zrób sobie plik .env.test.local i tam skopiuj sobie env do bazy ustawiając odpowiednio
damianooo
ok to zrobilem tak ze mam teraz takie dwa pliki:

.env
i
.env.test.local

w .env mam takie ustawienia:
  1. APP_ENV=dev
  2. DATABASE_URL=mysql://newuser:password@127.0.0.1:3306/baza1


a w .env.test.local takie:
  1. APP_ENV=dev
  2. DATABASE_URL=mysql://newuser:password@127.0.0.1:3306/baza2


wykonujac ponizsze polecenia zawsze odwolanie jest do konfiguracji z pliku .env

  1. php bin/console doctrine:database:drop --force
  2. php bin/console doctrine:database:create
  3. php bin/console doctrine:schema:update --force
  4. php bin/console doctrine:fixtures:load


jak zrobic aby czytal konfiguracje z pliku .env.test.local ?

Chcialem zrobic tak zeby dane dla testow jednostkowych byly w drugiej bazie danych
Mozliwe ze nie rozumiem idei opisanej tutaj:
https://symfony.com/doc/4.4/testing/database.html
w rozdziale:
"Configuring a Database for Tests"
Pyton_000
Główny config jest w .env.

W .env.test.local nadpisujesz tylko te rzeczy które są inne. Wywal te APP_ENV z test.

Żeby odpalić jakieś polecenie z konsoli w konkretnym środowisku musisz dodać --env=test

Testy phpunit mają swój plik phpunit.xml.dist i to w tym pliku jest APP_ENV
Kod
<server name="APP_ENV" value="test" force="true" />


Jak odpalisz sobie phpunit to on będzie odpalany w środowisku test zgodnie z tym co jest w phpunit.xml.dist
damianooo
ok.
- usunalem ENV z .env.test.local
- odpalilem polecania do tworzenia bazy i jej zaladowania z --env=test (dziala, tzn tworzy baze wskazana w pliku .env.test.local, a wiec super)
- w pliku phpunit.xml.dist mam ten wpis ze wskazaniem srodowiska a wiec <server name="APP_ENV" value="test" force="true" />

Niestety gdy odpalam testy np tak:
php bin/phpunit

to mam taki blad:

  1. 2) App\Tests\Repository\UserRepositoryTest::testShouldCountNumberOfActiveUsers
  2. LogicException: You must set the KERNEL_CLASS environment variable to the fully-qualified class name of your Kernel in phpunit.xml / phpunit.xml.dist or override the App\Tests\Repository\UserRepositoryTest::createKernel() or App\Tests\Repository\UserRepositoryTest::getKernelClass() method.
  3.  
  4. /var/www/ligatyperow2/vendor/symfony/framework-bundle/Test/KernelTestCase.php:54
  5. /var/www/ligatyperow2/vendor/symfony/framework-bundle/Test/KernelTestCase.php:95
  6. /var/www/ligatyperow2/vendor/symfony/framework-bundle/Test/KernelTestCase.php:73
  7. /var/www/ligatyperow2/tests/Repository/UserRepositoryTest.php:17
Pyton_000
dodaj to phpunit.xml.dist

<server name="KERNEL_CLASS" value="App\Kernel" />
damianooo
dzieki dziala super.

moglem w sumie sam sobie wyszukac odpowiedzi w necie ale dzieciaki mi przeszkadzaly i nie moglem tego zrobic wczesniej.
Rozwiazanie bledu jest m.in opisane tutaj:
https://github.com/symfony/symfony-standard/issues/1073

jeszcze raz dzieki wielkie za pomoc w rozwiazaniu tematu.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2020 Invision Power Services, Inc.