質問 > その他 > ユニットテストでのDBのトランザクションについて |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
dora.bot |
投稿日時: 2023/6/2 21:47
対応状況: 解決済
|
新米 登録日: 2023/6/2 居住地: 投稿: 2 |
ユニットテストでのDBのトランザクションについて [EC-CUBE]
eccube4.1 [PHP] php7.4 [データベース] mysql5.7 [dockerイメージ] php:7.4-apache-bullseye [カスタマイズの有無] 既存のいくつかのエンティティに対してREST APIを実装 [現象] phpunit実行後、dtb_customer にレコードが追加されている想定なのですが、追加されません。 テスト実行後に dtb_customer のauto_incrementが増えているので、トランザクションは走っていると思うのですが・・・ 以下のような内容でphpunitを実行してます。 ◆ `Eccube\Tests\EccubeTestCase`を継承して、setUp() 内で`EccubeTestCase::createCustomer()`を実行している (内部的には `Eccube\Tests\Fixture\Generator::createCustomer()`を呼び出している) ◆ tearDown() には手をつけていない setUp(), tearDown() のどこかの処理で、beginTransaction(), rollback() を実行しているのではないかと思ったのですが、自分には見つけられませんでした。 どなたか分かる方がいれば教えていただきたいです。 |
mcontact |
投稿日時: 2023/6/3 21:20
対応状況: −−−
|
神 登録日: 2022/1/22 居住地: 投稿: 1306 |
Re: ユニットテストでのDBのトランザクションについて https://github.com/EC-CUBE/ec-cube/blob/4.1/tests/Eccube/Tests/Transaction/TransactionListenerTest.php
|
dora.bot |
投稿日時: 2023/6/4 2:56
対応状況: 解決済
|
新米 登録日: 2023/6/2 居住地: 投稿: 2 |
Re: ユニットテストでのDBのトランザクションについて 返信ありがとうございます!
ご記載いただいた `Eccube\Tests\Transaction\TransactionListenerTest`は、コメントを読む限りでは`Eccube\EventListener\TransactionListener`のテストをしているように見えました。 該当のイベントリスナーは`KernelEvents`の前後でトランザクションを張っていますが、テスト環境では基本的に無効にしているようです。 https://github.com/EC-CUBE/ec-cube/blob/4.1/src/Eccube/EventListener/TransactionListener.php https://github.com/EC-CUBE/ec-cube/blob/4.1/app/config/eccube/services_test.yaml#L9-L13 当投稿についてですが、自己解決しました。 phpunitのlistener設定でテスト前後にトランザクションを張っていました。 https://github.com/EC-CUBE/ec-cube/blob/4.1/phpunit.xml.dist#L38 symfonyのドキュメントにも全く同じではないですが同様の項目がありました。 https://symfony.com/doc/4.4/testing.html#resetting-the-database-automatically-before-each-test もしかしたらベテランのsymfonyエンジニアなら割と当たり前だったのかもしれません。 お騒がせしました。 以上で当投稿は解決とさせていただきます。 ご回答いただきありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |