Skip to main content

Command Palette

Search for a command to run...

Laravel - Teste de relacionamento One To One

Published
2 min read
F

Sou Full Stack e escritor amador entusiasmado por desenvolvimento de software. Compartilho meu entusiasmo pela tecnologia e complexidades do desenvolvimento através da escrita.

Teste Feature de Relacionamento no Laravel para Modelos - Introdução

No desenvolvimento do projeto, o controle de erros muitas vezes é negligenciado. À medida que a aplicação cresce com mais módulos ao longo dos anos, o controle de erros torna-se crucial. Ao lidar com alterações solicitadas pelos clientes, frequentemente nos deparamos com a leitura e correção de trechos anteriores de código. Entretanto, dado que esse código é utilizado em vários locais, corrigir uma parte pode impactar outra =)). Como garantir que a correção de uma linha não cause problemas em outros lugares? Isso afetará outras partes do sistema? Em projetos pequenos, pode parecer que não há grandes problemas. No entanto, em projetos grandes, que recebem 100 bilhões por mês e têm milhões de usuários, simplesmente corrigir uma linha de código pode desencadear um incidente imediato. :v Por isso, em momentos como esses, os Testes Unitários desempenham um papel crucial. Hoje, vou guiar vocês sobre como escrever testes de relacionamento nos modelos. Vamos explorar alguns relacionamentos comuns no Laravel para os quais vamos escrever testes:

1. Relacionamento One to One (Relação um para um)

Por exemplo, temos o Modelo User que se relaciona de forma um para um com o Produto

Método: hasOne()

//Model User
public function product() 
{ 
   return $this->hasOne(Product::class); 
}

Vamos criar o teste da seguinte maneira:

public function test_user_has_one_product()
{
    $user = User::factory()->create(); 

    $product = Product::factory()->create(['user_id' => $user->id]); 

    $this->assertInstanceOf(Product::class, $user->product); 
}

Explicação: Aqui, usamos uma factory para criar um usuário e um produto associado a esse usuário. Se $user->product retorna uma instância de Produto, então está correto. Ou se $user->product->count() retorna 1, também está correto, pois um usuário tem apenas um produto.

Definição inversa: belongsTo()

//Model Product
public function user() 
{ 
  return $this->belongsTo(User::class); 
}

Vamos criar o teste da seguinte forma:

public function test_product_be_longs_to_user()
{
    $user = User::factory()->create(); 

    $product = Product::factory()->create(['user_id' => $user->id]);

    $this->assertInstanceOf(Product::class, $product->user);
}

Aqui está a maneira de escrever teste de relacionamento para modelos no Laravel. Espero que este tutorial seja útil para você.

More from this blog

Dicas de Laravel - fsales

28 posts

Sou Full Stack e escritor amador, apaixonado por software. Compartilho no blog os processos e desafios que enfrentei, com o objetivo de dividir meu entusiasmo e aprendizado com você!