Метод travel
Метод travel позволяет в тестах Laravel перемещаться
вперёд или назад во времени. Он применяется к объекту
тестового класса, который наследуется от TestCase,
и возвращает экземпляр Carbon - текущее время
после перемещения. Первым параметром передаётся количество
единиц времени, вторым - строка с единицей измерения
(например, 'second', 'minute', 'hour',
'day', 'week', 'month', 'year').
Если второй параметр не указан, используется 'second'.
Также метод принимает третий параметр для указания
относительности перемещения: 'absolute' или 'relative'.
По умолчанию используется относительное перемещение.
Синтаксис
<?php
$this->travel($value, $unit = 'second', $relative = 'relative');
?>
Пример
Давайте переместимся на 5 дней вперёд и проверим время:
<?php
use Carbon\Carbon;
use Tests\TestCase;
class ExampleTest extends TestCase
{
public function test_travel_forward()
{
$currentTime = Carbon::now();
$this->travel(5, 'day');
$newTime = Carbon::now();
$difference = $newTime->diffInDays($currentTime);
echo $difference;
}
}
?>
Результат выполнения кода:
"5"
Пример
Давайте переместимся на 2 часа назад и проверим время:
<?php
use Carbon\Carbon;
use Tests\TestCase;
class ExampleTest extends TestCase
{
public function test_travel_backward()
{
$currentTime = Carbon::now();
$this->travel(-2, 'hour');
$newTime = Carbon::now();
$difference = $newTime->diffInHours($currentTime);
echo $difference;
}
}
?>
Результат выполнения кода:
"2"
Пример
Давайте используем абсолютное перемещение в определённую дату:
<?php
use Carbon\Carbon;
use Tests\TestCase;
class ExampleTest extends TestCase
{
public function test_travel_absolute()
{
$targetDate = Carbon::create(2025, 1, 1, 0, 0, 0);
$this->travel($targetDate, 'absolute');
$newTime = Carbon::now();
echo $newTime->toDateString();
}
}
?>
Результат выполнения кода:
"2025-01-01"
Смотрите также
-
метод
travelTo,
который устанавливает конкретное время -
метод
freezeTime,
который замораживает текущее время -
метод
setUp,
который выполняется перед каждым тестом -
метод
tearDown,
который выполняется после каждого теста