Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][SF4] Problem z wykonaniem komendy z konsoli, Problem z wykonaniem php bin/console doctrine:fixtures:load
damianooo
post 19.03.2020, 23:10:07
Post #1





Grupa: Zarejestrowani
Postów: 461
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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 .
Go to the top of the page
+Quote Post
ohm
post 20.03.2020, 00:29:21
Post #2





Grupa: Zarejestrowani
Postów: 538
Pomógł: 130
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


bin/console --env=dev?
Go to the top of the page
+Quote Post
damianooo
post 20.03.2020, 20:38:40
Post #3





Grupa: Zarejestrowani
Postów: 461
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


---------------------------------

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 ?

Ten post edytował damianooo 20.03.2020, 21:39:20
Go to the top of the page
+Quote Post
Pyton_000
post 21.03.2020, 11:33:59
Post #4





Grupa: Zarejestrowani
Postów: 7 927
Pomógł: 1389
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zrób sobie plik .env.test.local i tam skopiuj sobie env do bazy ustawiając odpowiednio
Go to the top of the page
+Quote Post
damianooo
post 26.03.2020, 20:47:38
Post #5





Grupa: Zarejestrowani
Postów: 461
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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"
Go to the top of the page
+Quote Post
Pyton_000
post 26.03.2020, 21:54:06
Post #6





Grupa: Zarejestrowani
Postów: 7 927
Pomógł: 1389
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
damianooo
post 29.03.2020, 15:01:09
Post #7





Grupa: Zarejestrowani
Postów: 461
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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


Ten post edytował damianooo 29.03.2020, 15:02:45
Go to the top of the page
+Quote Post
Pyton_000
post 29.03.2020, 17:39:08
Post #8





Grupa: Zarejestrowani
Postów: 7 927
Pomógł: 1389
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


dodaj to phpunit.xml.dist

<server name="KERNEL_CLASS" value="App\Kernel" />
Go to the top of the page
+Quote Post
damianooo
post 29.03.2020, 20:48:35
Post #9





Grupa: Zarejestrowani
Postów: 461
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.05.2020 - 14:14