🍰
CakePHP+PHPUnitでのモックテスト時には必ず使用メソッド名を配列で渡す
地味にハマったのでメモ。
public function setUp()
{
parent::setUp();
$this->controller = $this->generate('Entities', [
'models' => [
'Entity' => ['find', 'findById', 'saveAssociated'] // ここが重要
]
]);
}
CakePHP におけるコントローラーモックの作成時、'Entity' => []
を省略して'Entity'
とモデル名のみの表記にすることも可能で、横着してそうやっていました。ところがfindById()
といった Magic Methods*が CakePHP では多用されているため、横着してしまうとスタブメソッドが利用できません。
何度やっても期待通りにならないので調べたところ、Magic Methods を含むテスト時には、モック作成時にきちんとメソッド名を定義する必要があります。
* Magic Methods - メソッド名を頼りに自動的に処理内容が決定されるもの。
Discussion