たとえばこんな感じのコントローラーとテストコードを
書いてみる。
各関数は内部でコンポーネントやモデル内のメソッドを呼び出している
コントローラー
<?php class UsersController extends AppController { // 他の関数群.... function hoge() { // 処理.... $this->Component->fuga(); // 処理.... } function foo() { // 処理.... $this->Model->bar(); // 処理.... } // 他の関数群.... }
テストコード(簡略化したもの)
<?php function test_hoge() { $this->Users->hoge(); // assertEqualとかのテストメソッド } function test_foo() { $this->Users->foo(); // assertEqualとかのテストメソッド }
これでhogeメソッドやfooメソッドに対し何かしらのテストを実行すると、
Fatal error: Call to a member function hoge() on a non-object in ....
とか、
Fatal error: Call to a member function foo() on a non-object in ....
みたいな結果が出てしまう。
解決方法は知らない。
解決。
$Model = new Model(); $Component = new Component();
としてモデルやコンポーネントのメソッドを呼び出すと上記のエラーは出ません。