base_path()
ヘルパーを使用する属性メソッドをチェックするユニットテストを作成しようとしていますが、例外が発生しています:Call to undefined method Illuminate\Container\Container::basePath()
。ユニットテストをLaravelで行ったときのsetUp/tearDownフィクスチャ
フルスタックトレースは以下の通りです:私はsetUp
とtearDown
備品を使用することを突き止めました
\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php:179
\app\Message.php:47
\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php:432
\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php:333
\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php:306
\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1279
\tests\Unit\MessageTest.php:59
- 私が持っている場合でも:
public function setUp()
{
//$_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__) . "/../..";
}
public function tearDown()
{
//unset($_SERVER['DOCUMENT_ROOT']);
}
私は上記を取得していますエラー。治具を完全に取り外すと、エラーは消えてしまいます。
私はsetUpBeforeClass
とtearDownAfterClass
で与えられたメソッドを置き換えたら、エラーが消えるが、私はそれを引き起こしているかを知りたいと思います。
私が知っている限り、これはvanilla Laravel 5.4のインストール(正確には5.4.36)ですが、追加のライブラリがインストールされています(実際にはどのライブラリも言うことができません)。私はphpunit.xml
ファイルをセットアップしていませんが、公正であるためには何を探すべきか分かりません。
私はLaravel(同バージョン)を新しくインストールしてテストしましたが、まったくそのまま(そのままの状態でphpunit.xmlファイルがあります)。バージョン5.5ではそうではありません。
:そうのよう
? – eithed
テストクラスの継承に従うと、 イルミネーション\ Foundation \ Testing \ TestCaseになります。 –
このクラスには、実際にすべてのテストでLaravelを設定する独自のsetUpメソッドとtearDownメソッドがあります。したがって、テストクラスでparent :: setUp()を呼び出さないと、このコードは実行されず、Laravel Appもなくエラーが発生します。 独自のsetUp/tearDownメソッドがない場合、setUp/tearDownの親クラスバージョンはPHPによって自動的に実行されます。 –