0

現在、CIUnit (https://bitbucket.org/kenjis/my-ciunit) を使用して、phpunit で CodeIgniter アプリをテストしています。問題は、同じ名前のコントローラーが複数あることです。"Blog" という名前のルート コントローラー ディレクトリにコントローラーがあり、controller/ajax/ ディレクトリに "Blog" というコントローラーがあります。その理由は、メイン コントローラーからすべての ajax リクエストを分離するためです。

両方のファイルでテストを実行すると、次のエラーが発生します。

PHP 致命的なエラー: でクラスのブログを再宣言できません ...

まあ、私はこのエラーが発生していることに驚いていません。

これを解決するためのオプションは何ですか?

  1. ajax ディレクトリのコントローラーに「ajax」というプレフィックスを付けます (少しばかげた url/ajax/ajax_blog にしか見えません)。
  2. 名前空間を使用します (その場合、codeigniter も名前空間にする必要があると思います)
  3. 3 つの個別の phpunit.xml ファイルを作成します。

これは私が探しているソリューションではありません。他に選択肢はありますか?各テストスイートを個別に実行することは何とか可能ですが、それでも1つのコマンドで実行できますか? テストスイート間でオブジェクトを「きれいにする」ことはできますか? 他に何か?

4

1 に答える 1

1

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

2 つのコントローラーに同じ名前を付けても、CI を通常どおり実行する場合は問題ありません。これは、要求ごとに 1 つのコントローラーのみがインスタンス化されるためですが、これは避けるべきです。

気に入らない ajax-url だけの場合は、ルートでオーバーライドしてください ( 内config/routes.php):

$routes['ajax/blog'] = 'ajax/ajax_blog';
于 2012-04-25T10:56:40.093 に答える