I figured out how to mock the Auth component while testing my controllers, but I'm trying to mock the Auth component while testing my components. I am using cakephp2.0 and phpUnit.
When I use :: generate (), I get an Error: Call to undefined TestCalendarController :: generate message.
Is there a way to mock the Auth Component user () function? Or do I need to rewrite the component to avoid using it?
Thanks!
CalendarComponentTest
App::uses('Controller', 'Controller'); App::uses('CakeRequest', 'Network'); App::uses('CakeResponse', 'Network'); App::uses('ComponentCollection', 'Controller'); App::uses('CalendarComponent', 'Controller/Component'); App::uses('AuthComponent', 'Controller/Component'); class TestCalendarController extends Controller { } class CalendarComponentTest extends CakeTestCase { public $CalendarComponent = null; public $Controller = null; public function setUp() { parent::setUp(); // Setup our component and fake test controller $Collection = new ComponentCollection(); $this->CalendarComponent = new CalendarComponent($Collection); $CakeRequest = new CakeRequest(); $CakeResponse = new CakeResponse(); $this->Controller = new TestCalendarController($CakeRequest, $CakeResponse); $this->CalendarComponent->startup($this->Controller); } //Here I am trying to mock the Auth component. I've tried a number of different things, and I'm not getting anything to work. public function testAdjust() { $TestCalendar = $this->Controller->generate('TestCalendar', array( 'components' => array( 'Auth' => array('user') ) )); $TestCalendar->Auth->staticExpects($this->any()) ->method('user') ->will($this->returnValue(array('id'=>1, 'timezone'=>'America/Los_Angeles', 'type'=>'student'))); // Test our adjust method with different parameter settings $this->CalendarComponent->calculate_parameters(); } public function tearDown() { parent::tearDown(); // Clean up after we're done unset($this->CalendarComponent); unset($this->Controller); } }
source share