php - CakePHP 2 testing model with no table using mock method for email -


i'm attempting write test model has no table sends email if data passes validation in cakephp 2.

to test want assert data passes validation , therefore send email without sending one. attempting create mock method cakeemail. however, test failing because $usedbconfig hasn't defined mock method:-

undefined property: mock_mymodel_7a1fb8d0::$usedbconfig 

i assume issue model not having table, cannot see how resolve it.

my model looks (excluding validation rules):-

<?php  app::uses('cakeemail', 'network/email');  class mymodel extends appmodel {      public $usetable = false;      public function send($data) {          $this->set($data);          if ($this->validates() === false) {             return false;         } else {             $email = $this->getemailer();             $email->from($data['mymodel']['email_from']);             $email->to($data['mymodel']['email_to']);             $email->subject($data['mymodel']['subject']);             $email->send($data['mymodel']['message']);         }          return true;      }      public function getemailer() {         return new cakeemail();     }  } 

my test is:-

<?php class mymodel extends caketestcase {      public function setup() {         parent::setup();         $this->mymodel = classregistry::init('mymodel');     }      public function testsend() {          $emailer = $this->getmock(             'cakeemail',             array(                 'to',                 'emailformat',                 'subject',                 'replyto',                 'from',                 'template',                 'viewvars',                 'send'             )         );         $emailer->expects($this->any())->method('send')->will($this->returnvalue(true));          $mymodel = $this->getmockformodel('mymodel', array('getemailer'));         $mymodel->expects($this->once())->method('getemailer')->will($this->returnvalue($emailer));          $data = array(             'mymodel' => array(                 'email_to' => 'foo@example.com',                 'email_from' => 'bar@example.com',                 'subject' => 'foo bar',                 'message' => ''             )         );          $result = $mymodel->send($data);         $this->asserttrue($result);      }  } 

any appreciated. first time i've tried/needed mock method in cake using tests.

class name should have been mymodeltest rather mymodel. cakephp's naming convention needs adhered to.


Comments

Popular posts from this blog

Payment information shows nothing in one page checkout page magento -

tcpdump - How to check if server received packet (acknowledged) -