Неожиданный формат DateTime в методе AssertDatabaseHas с датой при тестированииPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Неожиданный формат DateTime в методе AssertDatabaseHas с датой при тестировании

Сообщение Гость »


При использовании метода assertDatabaseHas в тестах возникает несоответствие в обработке полей даты.

Несмотря на то, что поле преобразуется как date в модели Eloquent и хранится как date в базе данных MySQL, метод assertDatabaseHas возврат даты в виде строки даты и времени.

Это приводит к сбою утверждения при сравнении значения даты из тестовых данных со значением даты из базы данных.
Шаги по воспроизведению
Миграция: $table->date('due_date')->nullable();

Модель: protected $casts = ['due_date' => 'date:Y-m-d'];

Завод: 'due_date' => now()->addDays(fake()->numberBetween(1, 365))->format('Г-м-д'),

Тест:

it('должен тестироваться правильно', function () { $owner = User::factory()->create(); $this->actingAs($владелец); $this->assertDatabaseCount('доставки', 0); $delivery_data = Доставка::factory()->make()->toArray(); $response = $this->postJson(route('me.deliveries.store'), $delivery_data); $это ->assertDatabaseCount('доставки', 1) ->assertDatabaseHas('доставки', [ 'title' => $delivery_data['title'], 'description' => $delivery_data['description'], 'due_date' => $delivery_data['due_date'], 'visibility' => $delivery_data['visibility'], 'user_id' => $owner->id, ]); }); Результат:
Tests\Feature\API\Controllers\MeDeliveryStoreTest > он должен тестироваться правильно Не удалось подтвердить, что строка в таблице [доставки] соответствует атрибутам { "title": "Maiores tempore enim fuga qui.", "description": "Iure ipsum tempora est sequi et optio. Omnis rerum qui Architecto Officiis. Deleniti quos et harum et nobis. Nobis veniam кроме corrupti Placeat.", "due_date": "03.12.2024", "видимость": "публичный", «user_id»: 1, }. Нашел похожие результаты: [ { "title": "Maiores tempore enim fuga qui.", "description": "Iure ipsum tempora est sequi et optio. Omnis rerum qui Architecto Officiis. Deleniti quos et harum et nobis. Nobis veniam кроме corrupti Placeat.", "due_date": "2024-12-03 00:00:00", "видимость": "публичный", «user_id»: 1, } ]. в тестах/Функция/API/Контроллеры/MeDeliveryStoreTest.php:21 17▕ $response = $this->postJson(route('me.deliveries.store'), $delivery_data); 18▕ 19▕ $это 20▕ ->assertDatabaseCount('доставки', 1) ➜ 21▕ ->assertDatabaseHas('доставки', [ 22▕ 'title' => $delivery_data['title'], 23▕ 'description' => $delivery_data['description'], 24▕ 'due_date' => $delivery_data['due_date'], 25▕ 'видимость' => $delivery_data['видимость'], Тесты: 1 провален (3 утверждения) Продолжительность: 0,63 с.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • AssertDatabaseHas завершается с ошибкой при использовании с десятичным столбцом базы данных.
    Anonymous » » в форуме Php
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • C ++ Дни между датой и сегодняшней датой
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Дифференцировать, если объект имеет тип DateTime или Nullable (DateTime?)
    Anonymous » » в форуме C#
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Не могу сравнить datetime.datetime с datetime.date
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Неправильный формат года («гггг») – неожиданный формат даты [закрыто]
    Anonymous » » в форуме IOS
    0 Ответы
    75 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»