我正在尝试编写和测试控制器动作。这是我所拥有的:
App::import('Component', 'Auth');
App::import('Controller', 'Goals');
class GoalControllerTest extends CakeTestCase {
function startCase() {
echo '<h1>Starting Test Case</h1>';
$this->Goals = new TestGoalsController();
$this->Goals->constructClasses();
$this->Goals->Component->initialize($this->Goals);
}
function endCase() {
unset($this->Goals);
ClassRegistry::flush();
echo '<h1>Ending Test Case</h1>';
}
function startTest($method) {
echo '<h3>Starting method ' . $method . '</h3>';
//$this->GoalsController = new TestGoalsController();
Mock::generate('AuthComponent');
$this->Goals->Auth = new MockAuthComponent();
}
function endTest($method) {
echo '<hr />';
}
function testSetHomepage() {
//get goal for test
$sql = "SELECT id FROM goals limit 1";
$goal = $this->Goals->Goal->query($sql);
$this->Goals->params = Router::parse('/goals/setHomepage/');
$this->Goals->beforeFilter();
$this->Goals->Component->startup($this->Goals);
$this->Goals->params['url']['goal_id'] = $goal[0]['goals']['id'];
$this->Goals->params['url']['set_to'] = 1;
$this->Goals->setHomepage();
//Mock Auth
$this->Goals->Auth->setReturnValue('user', 1);
//check the set
$sql = "SELECT GoalOnHome.goal_id FROM goals_users as GoalOnHome WHERE GoalOnHome.goal_id = '" . $this->Goals->params['url']['goal_id'] . "' limit 1";
$result = $this->Goals->Goal->query($sql);
$expected = false;
$this->assertEqual(empty($result), $expected);
unset($this->Goals->params['url']);
}
}
我正在尝试模拟身份验证组件,但在运行测试时出现此错误:
Unexpected PHP error [Undefined property: MockAuthComponent::$enabled] severity [E_NOTICE] in
有人可以帮我解决我在这里做错的事情吗?