routes.php文件
Route::get('signup', function(){
return "Hello World!";
});
/tests/SignupTest.php
class SignupTest extends TestCase {
public function testIndex(){
$this->call('GET', 'signup');
$this->assertResponseOK();
}
}
运行PHPUnit会返回以下内容:
OK (1 test, 1 assertion)
routes.php文件
Route::get('signup', array('uses' => 'Signup@process'));
/app/controllers/Signup.php
class Signup extends BaseController {
public function process(){
echo "Hello World!";
}
}
/tests/SignupTest.php
class SignupTest extends TestCase {
public function testIndex(){
$this->call('GET', 'signup');
$this->assertResponseOK();
}
}
PHPUnit返回以下内容:
There was 1 error:
1) SignupTest::testIndex
ReflectionException: Class Signup does not exist
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:476
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:416
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:423
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:77
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:50
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php:900
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Routing/Route.php:118
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php:964
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php:934
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:677
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:652
/Applications/MAMP/htdocs/laravel/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php:82
/Applications/MAMP/htdocs/laravel/vendor/symfony/browser-kit/Symfony/Component/BrowserKit/Client.php:319
/Applications/MAMP/htdocs/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:74
/Applications/MAMP/htdocs/laravel/app/tests/SignupTest.php:12
FAILURES!
Tests: 1, Assertions: 0, Errors: 1.
设置信息:
我认为我在Laravel或PHPUnit的core / config文件中没有改变任何内容。
我尝试过的事情:
我找到了关于此类问题的一些答案(在SO和其他网站上都有),答案建议修正类/文件/方法名称中的错误,例如:
Laravel Controller not working
我不认为这是一个问题,因为我检查了所有的名字。 它还返回“Hello World!”正如在浏览器中测试的上述路线所预期的那样,表明路线在Laravel中正常工作。问题似乎与PHPUnit有关。
我的问题:为什么PHPUnit不能在app / controllers中找到注册类?
答案 0 :(得分:1)
我认为因为基本的Laravel安装中有一个phpunit.xml
文件,所以PHPUnit会知道它。结果证明这是错误的。
问题
PHPUnit没有加载phpunit.xml
,这意味着bootstrap/autoload.php
中的引导程序文件没有被加载,因此PHPUnit不知道任何类文件在哪里,包括Signup.php
解决方案
当我运行PHPUnit时,我在phpunit.xml
开关中添加了--configuration
的文件路径:
--configuration /Applications/MAMP/htdocs/laravel/phpunit.xml
一般建议
如果PHPUnit告诉您它找不到类,请检查它是否正在加载phpunit.xml
和/或您的引导程序文件。确保您的phpunit.xml
文件正确指向您的引导文件,并且您的引导程序文件已正确配置以加载所需的类。
另外,正如我的问题所指出的那样,问题也可能是由于类/文件/方法名称之间的不一致造成的。