Laravel 8 PHPUnit 测试失败 -- Illuminate\Contracts\Filesystem\FileNotFoundException:路径中不存在文件
Laravel 8 PHPUnit Failed Test -- Illuminate\Contracts\Filesystem\FileNotFoundException : File does not exist at path
当运行下面的测试时,我在第$this->assertTrue(File::exists(database_path('migrations/'.$filename)));
行得到一个错误。正在创建我的模型并正在创建迁移文件,但我认为 $filename
函数不正确 运行 因为正在创建的迁移文件名为 2021_10_28_165227_create_tests_table.php
但 assert
检查正在寻找迁移文件 2021_10_28_045227_create_tests_table.php
。如您所见,文件名的 $now->format('h')
部分与创建的文件名和正在验证的文件名不同。
我正在使用 Laravel Valet,这可能是也可能不是问题的一个单独变量,这可能是小时、秒和分钟未与我的本地时间同步的原因。
...
class TenantScopeTest extends TestCase
{
use RefreshDatabase, WithFaker;
public function a_model_has_a_tenant_id_on_the_migration()
{
$now = Carbon::now();
$this->artisan('make:model Test -m');
// find the migration file and check it has a tenant_id on it
$filename = $now->year . '_' . $now->format('m') . '_' . $now->format('d') . '_' . $now->format('h')
. $now->format('i') . $now->format('s') .
'_create_tests_table.php';
$this->assertTrue(File::exists(database_path('migrations/'.$filename)));
$this->assertStringContainsString('$table->unsignedBigInteger(\'tenant_id\')->index();',
File::get(database_path('migrations/'.$filename)));
// clean up
File::delete(database_path('migrations/'.$filename));
File::delete(app_path('Models/Test.php'));
}
...
也许在使用 Carbon::now() 时选择不同的时区可以解决您的问题
当运行下面的测试时,我在第$this->assertTrue(File::exists(database_path('migrations/'.$filename)));
行得到一个错误。正在创建我的模型并正在创建迁移文件,但我认为 $filename
函数不正确 运行 因为正在创建的迁移文件名为 2021_10_28_165227_create_tests_table.php
但 assert
检查正在寻找迁移文件 2021_10_28_045227_create_tests_table.php
。如您所见,文件名的 $now->format('h')
部分与创建的文件名和正在验证的文件名不同。
我正在使用 Laravel Valet,这可能是也可能不是问题的一个单独变量,这可能是小时、秒和分钟未与我的本地时间同步的原因。
...
class TenantScopeTest extends TestCase
{
use RefreshDatabase, WithFaker;
public function a_model_has_a_tenant_id_on_the_migration()
{
$now = Carbon::now();
$this->artisan('make:model Test -m');
// find the migration file and check it has a tenant_id on it
$filename = $now->year . '_' . $now->format('m') . '_' . $now->format('d') . '_' . $now->format('h')
. $now->format('i') . $now->format('s') .
'_create_tests_table.php';
$this->assertTrue(File::exists(database_path('migrations/'.$filename)));
$this->assertStringContainsString('$table->unsignedBigInteger(\'tenant_id\')->index();',
File::get(database_path('migrations/'.$filename)));
// clean up
File::delete(database_path('migrations/'.$filename));
File::delete(app_path('Models/Test.php'));
}
...
也许在使用 Carbon::now() 时选择不同的时区可以解决您的问题