【发布时间】:2017-08-24 02:04:29
【问题描述】:
我正在尝试为我的 Laravel (5.2) API 项目设置单元测试。在我使用单元测试之前,我想为它们定义一个自定义命名空间,所以我在默认的TestCase.php 文件中创建了namespace Test;。像这样:
namespace Test;
class TestCase extends Illuminate\Foundation\Testing\TestCase
{
...
}
然后我在tests 文件夹下创建了一个文件夹UnitTests 并将我的单元测试放在具有以下命名空间的文件夹中:
namespace Test\UnitTests;
use Test\TestCase;
class CreateAccountTest extends TestCase
{
...
}
现在,当我想运行单元测试时,出现以下错误:
PHP Fatal error: Class 'Test\Illuminate\Foundation\Testing\TestCase' not found in /var/www/ops/tests/TestCase.php on line 6
所以基本上,Laravel 认为 Illuminate\Foundation\Testing\TestCaseclass 位于 Test 命名空间中,而不是 Laravel 中的 Illuminatenamespace。
我还在composer.json 文件中配置了以下自动加载:
"autoload": {
"classmap": [
"database",
"tests"
],
"psr-4": {
"App\\": "app/",
"Test\\": "tests/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
}
我也试过运行这两个命令都没有成功:
-
php artisan config:cache composer dump-autoload
【问题讨论】:
-
不应该是
class TestCase extends \Illuminate\Foundation\Testing\TestCase吗? -
没错!傻,因为我以为这个文件是由 Laravel 创建的,也许我不小心删除了斜杠什么的。感谢您的快速回复!
-
谢谢,这解决了我的问题!
-
请不要使用 cmets 作为答案 @xmike 否则这个问题将变得毫无用处,因为它没有答案!
-
嗯...从来没想过...谢谢
标签: php laravel laravel-5 laravel-5.2 phpunit