Laravel 框架类在 PHPUnit 数据提供程序中不可用
我在Laravel中设置了类似的东西:
在 /app/controllers/MyController 中.php
:
class MyController extends BaseController {
const MAX_FILE_SIZE = 10000;
// ....
}
在 /app/tests/MyControllerTest 中.php
:
class MyControllerTest extends TestCase {
public function myDataProvider() {
return [
[ MyController::MAX_FILE_SIZE ]
];
}
/**
* @dataProvider myDataProvider
*/
public function testMyController($a) {
// Just an example
$this->assertTrue(1 == 1);
}
}
但是,当我运行时,我收到以下错误:vendor/bin/phpunit
PHP Fatal error: Class 'Controller' not found in /home/me/my-app/app/controllers/BaseController.php on line 3 Fatal error: Class 'Controller' not found in /home/me/my-app/app/controllers/BaseController.php on line 3
如果我删除对中的类的引用并将其替换为文本常量,则测试成功完成。MyController
myDataProvider()
此外,我可以将引用放在实际方法内部,并且测试也成功完成。MyController::MAX_FILE_SIZE
testMyController()
Laravel 框架类的自动加载设置似乎直到调用数据提供程序方法之后,但在调用实际测试方法之前才设置。有没有办法解决这个问题,以便我可以从PHPUnit数据提供程序中访问Laravel框架类?
注意:我直接从命令行调用PHPUnit,而不是从IDE内部调用PHPUnit(例如NetBeans)。我知道有些人对此有问题,但我认为这不适用于我的问题。