2012-04-25 25 views
0

私は現在、CIUnit(https://bitbucket.org/kenjis/my-ciunit)を使ってphpunitでCodeIgniterアプリケーションをテストしています。問題は、同じ名前のコントローラが複数あることです。私は "Blog"という名前のルートコントローラディレクトリにコントローラを持っており、コントローラ/ ajax /ディレクトリに "Blog"というコントローラがあります。 理由は、メインコントローラからのすべてのajax要求を分離するためです。PHPUnit + CodeIgniter複数の同じ名前のオブジェクト

私は両方のファイルでテストを実行しているとき、私は次のエラーを取得する:

PHP Fatal error: Cannot redeclare class Blog in ...

まあ、私は、私はこのエラーを取得しています驚いていないです。

これを解決するための方法はありますか? "AJAX" とAjaxのディレクトリに

  1. プレフィックスコントローラ(のみビット愚かに見えるURL/AJAX/ajax_blog)
  2. 使用名前空間(私はあまりにも、その後CodeIgniterの名前空間に必要な推測)
  3. は3別々のPHPUnitを作成します。 .xmlファイル

これは実際に私が探している解決策ではありません。他のオプションはありますか?それぞれのテストスイートを別々に実行することは可能ですか?被験者の間でオブジェクトを「きれいにする」ことはできますか?他に何か?

答えて

1

PHPでクラス定義を「アンロード」することは不可能なので、上記以外のオプションはありません。

CIを正常に実行すると、2つのコントローラに同じ名前を付けても問題ありません。なぜなら、要求ごとに1つのコントローラしかインスタンス化されないためです。

それはあなたが多分(config/routes.php中)のルートでそれをオーバーライドし、好きではないだけで、AJAX、URLの場合:

$routes['ajax/blog'] = 'ajax/ajax_blog'; 
+0

ああ、確かに良いアイデア!ルーティングオプションを忘れてしまった。ありがとう! –

関連する問題