CakePHP 2.2.5 で保護されたメソッドをモックするのに苦労しています。メソッドを public に変更するとすべて正常に動作しますが、保護されると次のエラーが発生します。
PDOException SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。1行目の「is_uploaded_file」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください
私のモデルは次のようになります。
<?php
class Contact extends AppModel {
public $name = 'Contact';
protected function is_uploaded_file($tmp_name) {
return is_uploaded_file($tmp_name);
}
}
私のテストは次のようになります。
<?php
App::uses('Contact', 'Model');
class ContactTest extends CakeTestCase {
public function setUp() {
parent::setUp();
$this->Contact = ClassRegistry::init('Contact');
}
public function testStub() {
$stub = $this->getMock('Contact',array('is_uploaded_file'));
// Configure the stub.
$stub->expects($this->any())
->method('is_uploaded_file')
->will($this->returnValue(TRUE));
$this->assertEquals(TRUE, $stub->is_uploaded_file('tmp'));
}
}
何か案は?とても有難い。