いくつかの単体テストをレガシー PHP アプリケーションに実装しようとしています。
これには多くの課題がありましたが、特にこの質問については、現在、アプリの構成を管理する小さなクラスを検討しています。
クラス インターフェイスは非常に単純です。次のことを行います。
- コンストラクターは Populate メソッドを呼び出します。このメソッドは Recordset クラスを使用して、要求されたモジュールの構成をデータベースから読み込みます。
- 指定された構成値を返す Get メソッド。
- 設定値をメモリに設定する Set メソッド。
- 構成の更新を DB に書き戻す Save メソッド。
Get/Set メソッドのテストは簡単です。それらはプライベート配列に直接マップされ、期待どおりに機能します。
私が抱えている問題は、データベース処理のテストにあります。このクラスは、構成テーブルのいくつかのフィールド (モジュール名、言語など) を使用して、ロードする構成項目と優先度を決定します。そのために、一連の精巧な SQL 文字列を作成し、DB を直接呼び出して正しい構成データを取得します。
このための単体テストを作成する方法がわかりません。Get/Set メソッドを除けば、このクラスはほぼ完全に SQL 文字列の作成と実行で構成されています。
実際のDBに対して実際に実行せずに賢明にテストする方法と、それに伴うすべての問題がわかりません-他に何もないとしても、構成ローダーの複雑さは、少なくとも7つまたはわずかに異なる構成で入力された 8 つのテスト データベース。それは手に負えず壊れやすいように思えます。
ここからどのように進めればよいか、誰かが提案できますか? この種のクラスを単体テストすることさえ可能ですか?
どうもありがとう。