Ticket #2625 (new 改善提案)

Opened 6 years ago

Last modified 6 years ago

ユニットテストでのデータ整備部分で、テーブル内全削除されたままコミットされてしまう場合がある

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

comment:1 Changed 6 years ago by habu

  • Summary changed from ユニットテスト to ユニットテストでのデータ整備部分では、ユニットテスト内で再生成可能なデータのみをdeleteするようにすべき

comment:2 Changed 6 years ago by habu

  • Priority changed from to
  • Description modified (diff)
  • Summary changed from ユニットテストでのデータ整備部分では、ユニットテスト内で再生成可能なデータのみをdeleteするようにすべき to ユニットテストでのデータ整備部分で、テーブル内全削除されたままコミットされてしまう場合がある
Note: See TracTickets for help on using tickets.