前提・実現したいこと
コントローラーで特定の値がなかった場合、フラッシュメッセージとともにリダイレクトをさせるという処理をしているところがあります
この部分で変数の値がなければ返ってくるはずのflashをアサーションで確認したいです
発生している問題・エラーメッセージ
Session content for "Flash.flash.0.message" differs. Failed asserting that null matches expected 'Invalid request.'.
該当のソースコード
public function testPayCheckSalonId($Id = null) { //ない場合にのみエラーメッセージとリダクレクト処理を行えるか $this->enableRetainFlashMessages(); $this->post('/payments/pay/'. $Id); $this->assertSession('Invalid request.', 'Flash.flash.0.message'); }
元のコントローラー
public function pay($Id = null) { if (empty($Id)) { $this->Flash->error(__('Invalid request.')); return $this->redirect($this->referer()); } }
試したこと
以下のような形式に書き換えて見たりもしました
$Id = ''; if (empty($Id)) { $this->enableRetainFlashMessages(); $this->post('/payments/pay/'. $Id); $this->assertSession('Invalid request.', 'Flash.flash.0.message'); }
こちらは最初と同じエラーがでます
$Id = ''; if (empty($Id)) { $this->enableRetainFlashMessages(); $this->post('/payments/pay/'. $Id); $this->assertFlashElement('Flash/error'); }
こちらではメソッドはないと怒られました
Error: Call to undefined method App\Test\TestCase\Controller\PaymentsControllerTest::assertFlashElement()
フラッシュメッセージが発行されたかどうか確認するにはどのようにしたら良いでしょうか?
補足情報(FW/ツールのバージョンなど)
cakephp version 3.5
実行環境 local(MAMP)
回答1件
あなたの回答
tips
プレビュー