Ticket #2625 (new 改善提案) — at Version 2
ユニットテストでのデータ整備部分で、テーブル内全削除されたままコミットされてしまう場合がある
Reported by: | habu | Owned by: | somebody |
---|---|---|---|
Priority: | 低 | Milestone: | EC-CUBE 2.13系 ユニットテストProject |
Component: | その他 | Version: | 2.13.2 |
Keywords: | Cc: | ||
修正済み: | no |
Description (last modified by habu) (diff)
【追記】下記、Common_TestCase::tearDown内にて、ロールバックされるはずですので、特定の場合のみ発現する症状かもしれません。 tearDownにて、ロールバックされさえすれば、全削除するコードがユニットテスト内にある事は問題ではないですね。
---
現在、ユニットテストを動かすと、既存の顧客データが全て削除され、テスト用の顧客データ2件だけになってしまいます。
この挙動では、ユニットテストを動かし辛いですし、もしも本番環境で実行されてしまう様な事があれば大ごとだと思います。
ユニットテストでのデータ整備部分では、ユニットテスト内で再生成可能なデータのみをdeleteするようにすべきかと思います。
顧客データを全削除しているのは、 SC_Helper_Purchase_TestBase::setUpCustomer() です。
$this->objQuery->delete('dtb_customer');
他にも、以下の様に、テーブル内のデータを全削除するコードが見られます。 これらについても、可能な限り、ユニットテスト内で再生成可能なデータのみをdeleteするようにすべきかと思います。
$this->objQuery->delete('dtb_shipping'); $this->objQuery->delete('dtb_shipment_item'); $this->objQuery->delete('dtb_products_class'); $this->objQuery->delete('dtb_products'); $this->objQuery->delete('dtb_payment_options'); $this->objQuery->delete('dtb_deliv'); $this->objQuery->delete('dtb_delivtime'); $this->objQuery->delete('dtb_payment'); $this->objQuery->delete('dtb_order'); $this->objQuery->delete('dtb_order_temp'); $this->objQuery->delete('dtb_order_detail');
Change History
Note: See
TracTickets for help on using
tickets.