#unit-testing #laravel #laravel-4
#модульное тестирование #laravel #laravel-4
Вопрос:
Я пытаюсь начать использовать phpunit в моем проекте laravel.
Я вызываю «phpunit» и получаю эту ошибку:
$ phpunit
PHPUnit 3.6.10 by Sebastian Bergmann.
Configuration read from /home/bee/www/postaler/phpunit.xml
EPHP Fatal error: Cannot redeclare HelperisMenuActive() (previously declared in /home/bee/www/postaler/app/helpers.php:4) in /home/bee/www/postaler/app/helpers.php on line 6
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:46
PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:130
PHP 4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:192
PHP 5. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/TextUI/TestRunner.php:325
PHP 6. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:705
PHP 7. PHPUnit_Framework_TestSuite->runTest() /usr/share/php/PHPUnit/Framework/TestSuite.php:745
PHP 8. PHPUnit_Framework_TestCase->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:772
PHP 9. PHPUnit_Framework_TestResult->run() /usr/share/php/PHPUnit/Framework/TestCase.php:751
PHP 10. PHPUnit_Framework_TestCase->runBare() /usr/share/php/PHPUnit/Framework/TestResult.php:649
PHP 11. IlluminateFoundationTestingTestCase->setUp() /usr/share/php/PHPUnit/Framework/TestCase.php:801
PHP 12. IlluminateFoundationTestingTestCase->refreshApplication() /home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:31
PHP 13. IlluminateFoundationApplication->boot() /home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:48
PHP 14. IlluminateFoundationApplication->bootApplication() /home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:552
PHP 15. IlluminateFoundationApplication->fireAppCallbacks() /home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:569
PHP 16. call_user_func:{/home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:792}() /home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:792
PHP 17. TestCase->{closure:/home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/start.php:223-271}() /home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:792
PHP 18. require() /home/bee/www/postaler/vendor/laravel/framework/src/Illuminate/Foundation/start.php:239
мой вспомогательный код
<?php namespace Helper;
//app/helpers.php
function isMenuActive($url_segment) {
if (Request::segment(1) == $url_segment) { return " active"; }
}
Я включил вспомогательный файл в app/start/global.php
require app_path().'/helpers.php'
мой тестовый скрипт
<?php
// app/tests/FromTest.php
class FromTest extends TestCase {
public function testFrom()
{
$response = $this->call('GET', 'user/profile');
$this->assertTrue(true);
}
}
Ответ №1:
app/start/global.php
выполняется один раз для каждого запроса и не должен использоваться для определений классов / функций / констант. Вместо этого добавьте files
правило автозагрузки в свой composer.json.
"files": ["src/functions.php"],