Laravel - Teste de relacionamento One To One

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ê.

Did you find this article valuable?

Support Fernando Sales by becoming a sponsor. Any amount is appreciated!