Laravel 8 PHPUnit失败测试—照亮合同文件系统FileNotFoundException:文件不存在



当运行下面的测试时,我在$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()时选择不同的时区会解决您的问题

相关内容

最新更新