#php #laravel #phpunit
Вопрос:
При выполнении приведенного ниже теста я получаю ошибку в строке $this-gt;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-gt;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-gt;artisan('make:model Test -m'); // find the migration file and check it has a tenant_id on it $filename = $now-gt;year . '_' . $now-gt;format('m') . '_' . $now-gt;format('d') . '_' . $now-gt;format('h') . $now-gt;format('i') . $now-gt;format('s') . '_create_tests_table.php'; $this-gt;assertTrue(File::exists(database_path('migrations/'.$filename))); $this-gt;assertStringContainsString('$table-gt;unsignedBigInteger('tenant_id')-gt;index();', File::get(database_path('migrations/'.$filename))); // clean up File::delete(database_path('migrations/'.$filename)); File::delete(app_path('Models/Test.php')); } ...
Комментарии:
1. Итак, выбор другого часового пояса при использовании Carbon::теперь устранит вашу проблему?
2. Классно! Это сработало. Отправьте в качестве ответа, и я приму его. Спасибо.
3. Приятно это знать! Спасибо
4. Ваш тест вообще не имеет смысла, вы проверяете, работает ли
make:model
(собственная консольная команда фреймворка)… вам никогда не нужно тестировать фреймворк, кроме вашего собственного кода, так что этоmake:model
ваша замена или это собственная команда ?
Ответ №1:
Возможно, выбор другого часового пояса при использовании Carbon::now() решит вашу проблему