testAction will not use your TestPapers class that I assume you've created in your test. It will faulter at the redirect. I'm not sure why $this->data is not being populated by testAction in your admin_add action as you seem to be doing it correctly.. How do you know its not being populated? What errors are you getting?
while testAction has a lot going for it, its limitations prevent me from using it, among other things test that use testAction wont run in the CLI testsuite cake shell. So I avoid using it and just test my controllers the "hard way" As pointed out by Mark Story: http://www.mark-story.com/posts/view/testing-cakephp-controllers-the-hard-way In short, you have the right thing going with your TestPapers, simply instantiate it into a Papers var it within your TestCase and call functions on it directly. This way you can just set $this->Papers- >data directly and then call $this->Papers->admin_add(); Since you've overwritten redirect in your TestPapers class you'll be able to assert the correct redirects. Follow Mark's guide (link above), as he walks you through testing the admin_edit of a posts controller. You'll almost certainly be able to copy/paste most of it. Although I suggest Mocking the Auth Component instead of writing Auth.user to the Session. Just my opinion. Hope that helps, Nick http://www.webtechnick.com On Dec 27, 2:28 am, Lorenzo Bettini <[email protected]> wrote: > Yes, it uses a redirect (inside the method), but the problem comes up > before reaching a possible redirect: empty($this->data) is true when > entering the method itself... > > As for the redirect I think I already handle that with > > class TestPapers extends PapersController { > var $autoRender = false; > > function redirect($url, $status = null, $exit = true) { > $this->redirectUrl = $url; > } > > but the problem, as I said, it's that no data is passed to the action... > > > > John Andersen wrote: > > Is your add action using a redirect? > > John > > > On Dec 26, 6:48 pm, Lorenzo Bettini <[email protected]> wrote: > >> Hi > > >> I already managed to test some actions of controllers using testAction > >> method; these were actions that were expected to return something. > > >> Now, I'd like to test an add action of the controller, thus, following > >> the book I did: > > >> $data = array( > >> 'Paper' => array( > >> 'title' => 'MyTitle', > >> 'year' => 2009 > >> )); > >> debug($data); > >> $results = $this->testAction( > >> array( > >> 'controller' => 'papers', > >> 'action' => 'admin_add', > >> ), > >> array('data' => $data, 'method' => 'post') > >> ); > > >> but when executing the controller's action (I tried that with the > >> debug), the $this->data is always empty and uninitialized... where am I > >> going wrong? > > >> thanks in advance > >> Lorenzo > > -- > Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino > HOME:http://www.lorenzobettini.itMUSIC:http://www.purplesucker.com > BLOGS:http://tronprog.blogspot.com http://longlivemusic.blogspot.com Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
