バージョン選択

フォーラム

メニュー

オンライン状況

45 人のユーザが現在オンラインです。 (34 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 44
mcontact もっと...

サイト内検索

質問 > その他 > ユニットテストでの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
居住地:
投稿: 1279
オンライン
Re: ユニットテストでのDBのトランザクションについて
https://github.com/EC-CUBE/ec-cube/blob/4.1/tests/Eccube/Tests/Transaction/TransactionListenerTest.php


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

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エンジニアなら割と当たり前だったのかもしれません。
お騒がせしました。

以上で当投稿は解決とさせていただきます。
ご回答いただきありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,671名です
総投稿数は109,930件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1569
9
mcontact
1279
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.