Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

somenet77's avatar

Test is fail when casting a date

In Model

protected $casts = [
        'dob' => 'date:Y-m-d',
    ];

Factory

public function definition(): array
{
    return [
        'name' => fake()->name(),
        'gender' => 'male',
        'dob' => fake()->date(),
    ];
}

Test case

it('can retrieve player data', function () {
    $player = Player::factory()->create();

    livewire(PlayerResource\Pages\EditPlayer::class, [
        'record' => $player->getRouteKey(),
    ])
        ->assertFormSet([
            'name' => $player->name,
            'dob' => $player->dob->toDateTimeString(),
            'gender' => $player->gender,
        ]);
});

Error

 FAILED  Tests\Feature\PlayerTest > it can retrieve player data                                                                                                                                                                             
  Failed asserting that two strings are equal.
  -'1996-10-02 00:00:00'
  +'1996-10-02 16:58:29'

0 likes
1 reply
nexxai's avatar

I'm not sure why it's failing but after setting "date-only" everywhere, why are you asserting a "date-time" string in your test?

Shouldn't it be 'dob' => $player->dob->toDateString(), ?

Please or to participate in this conversation.