モデルで電子メール コンポーネントをモックしようとしていますが、最初の関数の後で Cake からエラーが表示されます: エラー: 非オブジェクトでメンバー関数 to() を呼び出します
ここに私のテストクラスがあります:
<?php
App::uses('User', 'Model');
class UserTest extends CakeTestCase {
.
.
// I'm not copying the setUp and tearDown methods here, but they are there.
.
.
public function testEmailTest(){
$CakeEmail = $this->getMock('CakeEmail',array('to','subject'));
$CakeEmail->expects($this->any())
->method('to')
->with($this->equalTo('ant@b.com'));
$CakeEmail->expects($this->once())
->method('subject')
->with($this->equalTo('hi'));
$this->User->CakeEmail = $CakeEmail;
$result = $this->User->emailCat();
}
}
ユーザーモデルは次のとおりです。
public $CakeEmail = null;
public function emailCat() {
if ( !$this->CakeEmail){
$this->CakeEmail = new CakeEmail();
}
$this->CakeEmail->subject('hi')
->to('ant@b.com')
->emailFormat('both')
->config('default')
->send('hi');
}
ケーキ v2.3.1。
このモック関数に複数のメソッドを設定する別の方法があるかもしれませんが、これは誰かがオンラインで公開したソリューションに基づいています。
(ここから電子メールを送信するべきではないことはわかっていますが、この 1 つの登録機能については、電子メールが送信されない場合にトランザクションをロールバックできるように、ここに保持したいと考えています)。