Hi everybody.
I am looking for some advice on how to test RESTful controllers
exchanging JSON data (I'm using $this->request->input() on all
requests methods to fetch data coming from clients). Here is the test
I started to write:
<?php
class UsersControllerTest extends ControllerTestCase {
public $fixtures = array('app.user');
public function testViewJson() {
$data = json_encode(array(
'id' => 1
));
$result = $this->testAction(
'/users.json',
array('data' => $data, 'method' => 'GET')
);
debug($result);
}
}
If I run the test, I'm getting the following error:
Fatal error: Cannot unset string offsets in
/home/matteo/workspace/partygoat/lib/Cake/Network/CakeRequest.php on
line 183 Call Stack: 0.0003 351908 1. {main}()
/home/matteo/workspace/partygoat/api/webroot/test.php:0 0.0132 1515196
2. CakeTestSuiteDispatcher::run()
/home/matteo/workspace/partygoat/api/webroot/test.php:92 0.0132
1515764 3. CakeTestSuiteDispatcher->dispatch()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php:114
0.0335 1670872 4. CakeTestSuiteDispatcher->_runTestCase()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php:97
0.0361 1948588 5. CakeTestSuiteCommand->run()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php:252
0.0635 5160212 6. CakeTestRunner->doRun()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/CakeTestSuiteCommand.php:113
0.0934 8174532 7. PHPUnit_TextUI_TestRunner->doRun()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/CakeTestRunner.php:58
0.0945 8304784 8. PHPUnit_Framework_TestSuite->run()
/usr/share/php/PHPUnit/TextUI/TestRunner.php:305 0.1004 8960128 9.
PHPUnit_Framework_TestSuite->runTest()
/usr/share/php/PHPUnit/Framework/TestSuite.php:742 0.1004 8960128 10.
CakeTestCase->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:766
0.1245 8964536 11. PHPUnit_Framework_TestCase->run()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/CakeTestCase.php:81
0.1247 8964536 12. PHPUnit_Framework_TestResult->run()
/usr/share/php/PHPUnit/Framework/TestCase.php:575 0.2543 8978228 13.
PHPUnit_Framework_TestCase->runBare()
/usr/share/php/PHPUnit/Framework/TestResult.php:629 0.2580 9083636 14.
PHPUnit_Framework_TestCase->runTest()
/usr/share/php/PHPUnit/Framework/TestCase.php:627 0.2581 9084740 15.
ReflectionMethod->invokeArgs()
/usr/share/php/PHPUnit/Framework/TestCase.php:737 0.2581 9084768 16.
UsersControllerTest->testViewJson()
/home/matteo/workspace/partygoat/api/Test/Case/Controller/UsersControllerTest.php:0
0.2582 9085444 17. UsersControllerTest->testAction()
/home/matteo/workspace/partygoat/api/Test/Case/Controller/UsersControllerTest.php:12
0.2582 9085772 18. ControllerTestCase->__call()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/ControllerTestCase.php:0
0.2582 9086180 19. call_user_func_array()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/ControllerTestCase.php:169
0.2582 9086496 20. ControllerTestCase->_testAction()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/ControllerTestCase.php:0
0.2583 9093896 21. CakeRequest->__construct()
/home/matteo/workspace/partygoat/lib/Cake/TestSuite/ControllerTestCase.php:207
0.2588 9094164 22. CakeRequest->_processGet()
/home/matteo/workspace/partygoat/lib/Cake/Network/CakeRequest.php:136
and if I comment the line raising the error (which tries unset
'/users.json' from $query), even if the test goes on with no problems,
inside the Controller $this->request->input() seems to be emtpy.
Should I have to fill a bug request for this error?
Finally, inside ``testAction`` documentation it seems possible to set
data for GET and POST requests only: is this true? If so, how can I
prefil ``php://input`` with data enabling my RESTful controller to
run?
Thank you in advance,
Matteo
--
http://www.matteolandi.net/
--
Our newest site for the community: CakePHP Video Tutorials
http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others
with their CakePHP related questions.
To unsubscribe from this group, send email to
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php