Faz um tempo que tento trabalhar com testes, mas não consigo colocar na cabeça como começar. Já assistiu alguns vídeos tanto daqui da Aluraa quanto de outros lugares mas na hora de por em prática, simplesmentea cabeça trava. Eu realmente quero trabalhar com testes pois entendo sua importante e aplicabilidade no meu trabalho, mas para dá o primeiro passo, separei duas dúvidas que estou tendo olhando meu código agora. (O código é referente a um sistema de condomínio que estou desenvolvendo, e já tem boas funcionalidades, feito em Laravel, mas zero testes automatizados e quero mudar essa realidade).
1 - Ao testar as ações de um CRUD, no caso real, eu só posso executar no sistema estando logado, nos testes sempre tenho que simular um login usando a função actingAs, ou existe alguma forma mais simples de simular? Vi que usando a função no setUp, abrange todos os testes.
2 - Eu entendo que devo utilizar o máximo de testes possíveis que eu possa imaginar para cobrir o máximo de cenários, mas eu tenho que fazer o mesmo teste para todas as funcionalidades, não há uma forma de refatorar isso? Exemplo, tenho vários CRUDs simples usando apenas campos ID e Descrição. Tenho que fazer os mesmos testes para cada CRUD desses? Não existe uma forma de criar um teste genérico que possa indicar cada um dessas funcionalidades?
Esses são alguns dos testes que tentei executar:
// Teste de rota $response = $this->get('/cores/create'); $response->assertStatus(200);
// Teste de conteúdo para garantir que estou na página correta $response->assertSee('Descrição:');
// Teste de cadastro $cores = factory('App\Models\Cores')->create(); $this->post('/cores', $cores->toArray()); $this->assertDatabaseHas('cores', ['cor_nome' => $cores->cor_nome]);