読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

simpletestで発生したエラーのメモ

simpletest

たとえばこんな感じのコントローラーとテストコードを
書いてみる。
各関数は内部でコンポーネントやモデル内のメソッドを呼び出している

コントローラー

<?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();

としてモデルやコンポーネントのメソッドを呼び出すと上記のエラーは出ません。