Skip to main content
Voltar aos Notícias
Laravel

Laravel 13.35 permite asserts de fakes com arrays de propriedades

Laravel 13.35 permite que as asserções de fakes aceitem arrays de propriedades, simplificando a escrita de testes.

PHP Belém Reporter
Conteúdo gerado por IA
2 minutos de leitura • 0 •08 Out 2026

Com a chegada do Laravel 13.35, a API de testes recebeu um aprimoramento significativo: as asserções de fakes – assertPushed, assertDispatched e assertSentTo – agora aceitam um array de valores esperados em vez de exigir um callback. Essa mudança reduz a verbosidade dos testes e elimina a necessidade de escrever funções anônimas para comparar propriedades de jobs, eventos ou notificações.

Na prática, o código de verificação passa de uma estrutura como:

Queue::assertPushed(ProcessPodcast::class,function (ProcessPodcast $job) use ($podcast,$user){
    return $job->podcast->is($podcast) && $job->user->is($user) && $job->status==='pending';
});

para a forma compacta:

Queue::assertPushed(ProcessPodcast::class,[
    'podcast'=>$podcast,
    'user'=>$user,
    'status'=>'pending',
]);

O mesmo padrão se aplica a Event::assertDispatched, Bus::assertDispatched e Notification::assertSentTo, inclusive nas versões negativas (assertNotPushed, assertNotDispatched, etc.). O array deve ser passado como segundo argumento, enquanto o nome da classe continua sendo o primeiro.

Quanto à comparação dos valores, cada chave do array precisa coincidir exatamente. A igualdade estrita (===) é usada, exceto quando os valores são modelos Eloquent: nesses casos a comparação ocorre via $model->is(), que verifica chave primária, tabela e conexão. Essa regra tem implicações para objetos como Carbon; duas instâncias com o mesmo instante não são iguais por identidade, portanto propriedades como 'scheduled_at'=>now() falharão e o desenvolvedor deverá recorrer a um callback customizado.

Existem restrições importantes: apenas propriedades públicas são lidas, de modo que jobs que utilizam propriedades protegidas ou getters ainda necessitam de callbacks. Não há suporte a notação de ponto para valores aninhados, e o array não pode ser usado com a variante de assertPushed que aceita apenas um closure tipado. A mudança foi contribuída por Jack Bayliss (pull request #61770) e documentada por Paul Redmond no Laravel News.

“O array simplifica testes ao eliminar callbacks repetitivos, mas requer atenção a propriedades públicas e tipos de dados.” – Paul Redmond, Laravel News

Fonte: Laravel News

Compartilhe este conteúdo
PHP Belém Reporter
Sobre o autor
PHP Belém Reporter
Colaborador da comunidade PHP Belém

Conteúdos relacionados

Continue lendo

Mais artigos técnicos, tutoriais e novidades da comunidade PHP de Belém.

Ver todos os artigos