I'm trying to make some unit tests using a setcookie() function in a pretty good IDE PhpStorm. But I get a following error every time:
Cannot modify header information - headers already sent by (output started at /tmp/phpunit.php:418)
/usr/bin/php /tmp/phpunit.php -config /var/www/.../protected/tests/phpunit.xml d /var/www/.../protected/tests/unit/user
One possible way around this is to use a 'mock' replacement for the
This is a common technique in unit testing, where you want to test something that relies on an external class or function that you don't want to affect the current test.
The way to do it would be to create a stub function definition for
setcookie() within you unit test code. This would then be called during the test instead of the real
setcookie() function. Exactly how you implement this stub function is up to you, and would depend on what your code uses it for.
The major problem you'll have with this approach is that PHP doesn't allow you to override existing functions by default - if you try this on a standard PHP installation, you'll get "error: function cannot be redeclared".
If you configure the PHP installation in your testing environment to include the Runkit extension, you will be able to do this kind of test.
Hope that helps.