Я создаю приложение, в котором пользователи могут выбрать один из определенных часовых поясов в config/timezones.php
:
return [
'malta' => 'Europe/Malta',
'manila' => 'Asia/Manila',
'newyork' => 'America/New_York',
];
В этом файле есть массив с идентификатором и допустимой строкой часового пояса (как найдено на PHP.net )
Я пытаюсь построить это приложение на основе тестовой разработки, поэтому, естественно, я написал модульный тест, чтобы проверить, правильно ли изменилось время, когда пользователь изменил свой часовой пояс:
namespace Tests\Unit;
use Carbon\Carbon;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class TimeZoneTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function the_date_and_time_will_be_displayed_based_on_the_timezone_of_the_user() {
$user = factory(\App\User::class)->create([
'timezone' => 'Asia/Manila' // +8 hours
]);
$date = Carbon::create(2018, 1, 1, 0, 0, 0); // 2018-01-01 00:00:00
$adjustedDate = $date->timezone($user->timezone)->format('Y-m-d H:i:s'); // +8 hours = 2018-01-01 08:00:00
$this->assertEquals('2018-01-01 08:00:00', $adjustedDate);
}
}
Это работает нормально, но вот проблема: если бы я сделал опечатку в файле конфигурации, модульный тест все равно прошел бы, но приложение сломалось бы.
Iмог бы просто создать еще один модульный тест, где я зациклюсь и проверим элементы моего файла конфигурации, используя in_array($timezone, timezone_identifiers_list())
, но я не уверен, принадлежит ли он к модульному тесту.Мне кажется, что это нужно проверить только один раз после фиксации вашего кода или чего-то еще.
Мои вопросы: как / где / когда я проверяю, действителен ли мой файл конфигурации перед его развертыванием в рабочей среде