LiipFunctionalTestBundleが使えない
現象
composer require --dev liip/functional-test-bundle
すると一応入る。(v1.9系)
が、最も使いたいfixtureをymlで書いてロードする用途では使えない。
具体的には、
nelmio/aliceを入れろと言われる 'nelmio/alice should be installed to use this method.'
↓
composer require --dev nelmio/alice
とするとnelmio/aliceのv3系が入るが、nelmio/alice v3系とLiipFunctionalTestBundleは互換性がない。
↓
composer require nelmio/alice:"^2.0"
とすると、今度はnelmio/alice v2系がSymfony3+と互換性がなく入らない。
解決策
LiipFunctionalTestBundle v2系を使う。ただしまだアルファ版。
composer require --dev liip/functional-test-bundle:"~2.0@alpha" nelmio/alice theofidry/alice-data-fixtures
なお、LiipFunctionalTestBundleのWebTestCaseで $this->loadFixtureFiles(['path/to/yml']);
したいだけならHautelookAliceBundleは要らなくなった。
その代わりに必要になったのが theofidry/alice-data-fixtures
https://github.com/theofidry/AliceDataFixtures
nelmio/alice theofidry/alice-data-fixtures をcomposer require後、実際に使うためにはバンドルを有効にする必要がある。
まだ(?)flex用レシピがないので config/bundles.php
に手動で追加する。
<?php
return [
// ..
+ Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['dev' => true, 'test' => true],
+ Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle::class => ['dev' => true, 'test' => true],
];
config/bundles.php
を更新した後はキャッシュクリアが必要(dev, testであっても!)
bin/console cache:clear --env=test
NotFoundHttpException, BadRequestHttpExceptionなどHTTPステータスコード制御系の例外がキャッチされない
現象
404とか400にするつもりでコントローラ内でこの系統の例外を投げたら、500エラーになっちゃう。
解決策
この系統の例外を自動キャッチしてHTTPステータスコードを変える機能は、実は symfony/twig-bundle
の ExceptionListener
の働きだったので、同様のものを自前で書くか composer require symfony/twig-bundle
する。
symfony/twig-bundleはレシピがあるので自動で有効化された。
機能テストをするとSQLのログがバーっと画面に表示される
$ composer require symfony/monolog-bundle
すると出なくなる