我有一些像在Laravel以下設置:Laravel框架類PHPUnit中的數據提供不可
在/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
我ge噸以下錯誤:
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
如果刪除在myDataProvider()
的參考MyController
類並用常量替換它,然後測試成功完成。
另外,我可以在實際的testMyController()
方法內放置對MyController::MAX_FILE_SIZE
的引用,並且測試也成功完成。
看來,對於Laravel框架類的自動加載設置沒有被設置到之後被調用數據提供方法,但之前實際的測試方法被調用。 有沒有辦法解決這個問題,以便我可以從PHPUnit數據提供者中訪問Laravel框架類?
注:我直接從命令行而不是從呼叫PHPUnit的一個IDE內(如NetBeans的)。我知道有些人有問題,但我認爲這不適用於我的問題。
調用'$ this-> refreshApplication();'可能會更安全,因爲這也會將環境設置爲'testing'。你也不一定需要創建一個構造函數,你可以直接在數據提供者中調用'$ this-> refreshApplication();'(如果你只有一個我猜的)。 – Antonio 2017-07-13 10:38:58