1

私は、ややユニークな方法でデータベースに接続するPHP(Zend Framework 1.12.1)アプリケーションに取り組んでいます。

基本的に、私にとって「ブラックボックス」であるOracleデータベースがあります。行またはテーブルを直接選択、更新、挿入、または削除する権限がありません。データベースビューへのアクセスのみが許可されており(選択のみ)、データを挿入/更新/削除する場合は、1つ以上のストアドプロシージャを呼び出す必要があります。実際のテーブル構造が何であるかはわかりません。また、誰も私にアクセスを許可することはないと思います。

ZFは、アプリケーションがデータベースで完全な特権を持っていると想定しているように見えるため、これらすべてにより、モデルの単体テストが非常に困難になります(モデルの記述は言うまでもありません)。(これが、これまでモデルの手動テストのみを行った理由であり、モデルはやや珍しいものです。)

私のアプリケーションは動作しますが、手動テストにうんざりしています。

他の誰かが以前にこの状況にあったことがありますか?データベース権限が制限されている環境で自動PHPUnitテストを実装するための具体的な手順をお勧めしますか?私はすでにdbadminに、というストアドプロシージャを提供するように依頼しましたresetTestData()。これにより、毎回一貫した状態からテストを実行できるようになりますが、ZFではそのストアドプロシージャを使用してテストすることはできません。 /または分解します。どうやら、各テストの前にデータセットをZend_Test_PHPUnit_DatabaseTestCase試行し、データを取得してデータベースに再入力するためにtruncate呼び出します。getDataSet()回避策?

4

2 に答える 2

0

テスト可能なアプリケーションを作成するのはそれほど簡単ではありません。

さまざまな種類のテストがあります。単体テストを使用している場合は、データベース、Web サービス、さらにはファイル システム リソースを呼び出してはいけません。これらすべてのものは嘲笑されなければなりません。難しいことはわかっていますが、それができない場合は、コードの匂いがします。

ただし、まだデータベースにアクセスする必要がある場合は、ローカルの Oracle データベースを配置して、必要に応じてアクセス許可を処理できるときに、独自のテスト環境を作成できます。

QA(たとえば)接続ではなくローカル接続を使用するためだけに、テストを実行するときに特定の構成を読み取ることができるため、システムのAPPLICATION_ENVを作成できます。

于 2013-01-25T14:34:21.340 に答える