laravel-tdd
Faz seu agente escrever testes para aplicações Laravel de forma eficiente. Utiliza ferramentas como PHPUnit e Pest para garantir a qualidade e a confiabilidade do código.
O que ela faz
Esta ferramenta ajuda a criar testes automáticos para seu código Laravel. Ela garante que seu aplicativo funcione como esperado e ajuda a encontrar erros rapidamente.
Quando usar
- ✓Ao criar novas partes do seu aplicativo Laravel.
- ✓Ao adicionar novas funcionalidades ao seu aplicativo.
- ✓Quando você quer ter certeza de que seu código não quebrou algo antigo.
Exemplo do que pedir para a IA
“Crie um teste para garantir que um novo usuário possa ser criado.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você escreve um teste que falha primeiro, depois escreve o código para fazer o teste passar. Por fim, você melhora o código sem quebrar o teste.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill laravel-tddOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/laravel-tdd/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Testes no Laravel com TDD
Desenvolvimento guiado por testes para aplicações Laravel usando PHPUnit, Pest, factories do Laravel e helpers de teste.
Quando Ativar
- Escrevendo novas aplicações ou funcionalidades no Laravel
- Implementando endpoints de API com autenticação Sanctum ou Passport
- Testando modelos Eloquent, relacionamentos, scopes e accessors
- Configurando infraestrutura de testes para projetos Laravel
- Escrevendo testes de funcionalidade para controllers HTTP e requisições de formulário
- Simulando serviços externos (filas, e-mail, notificações, HTTP)
Fluxo de Trabalho TDD para Laravel
Ciclo Vermelho-Verde-Refatorar
// Step 1: RED — Write a failing test
public function test_a_product_can_be_created(): void
{
$product = Product::factory()->create(['name' => 'Test Product']);
$this->assertDatabaseHas('products', ['name' => 'Test Product']);
}
// Step 2: GREEN — Write the migration, model, and factory
// Step 3: REFACTOR — Improve while keeping tests green
Configuração
Configuração do PHPUnit
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true">
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">tests/Feature</directory>
</testsuite>
</testsuites>
<php>
<env name="APP_ENV" value="testing"/>
<env name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_STORE" value="array"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
<env name="MAIL_MAILER" value="array"/>
<env name="QUEUE_CONNECTION" value="sync"/>
<env name="SESSION_DRIVER" value="array"/>
</php>
</phpunit>
Configuração do TestCase Base
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
protected function setUp(): void
{
parent::setUp();
// Call $this->withoutExceptionHandling() only in tests that
// test non-HTTP exceptions; it suppresses assertStatus() etc.
}
// Helper: Authenticate and return user
protected function actingAsUser(): mixed
{
$user = \App\Models\User::factory()->create();
$this->actingAs($user);
return $user;
}
protected function actingAsAdmin(): mixed
{
$admin = \App\Models\User::factory()->admin()->create();
$this->actingAs($admin);
return $admin;
}
}
Factories de Modelos
// database/factories/UserFactory.php
class UserFactory extends Factory
{
protected static ?string $password = null;
public function definition(): array
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => static::$password ??= Hash::make('password'),
'remember_token' => Str::random(10),
'role' => 'user',
];
}
public function admin(): static
{
return $this->state(fn (array $attributes) => ['role' => 'admin']);
}
public function unverified(): static
{
return $this->state(fn (array $attributes) => ['email_verified_at' => null]);
}
}
// database/factories/ProductFactory.php
class ProductFactory extends Factory
{
public function definition(): array
{
return [
'name' => fake()->unique()->words(3, true),
'slug' => fn (array $attrs) => Str::slug($attrs['name']),
'description' => fake()->paragraph(),
'price' => fake()->numberBetween(100, 100000),
'stock' => fake()->numberBetween(0, 100),
'is_active' => true,
'user_id' => UserFactory::new(),
];
}
public function outOfStock(): static
{
return $this->state(fn (array $attributes) => ['stock' => 0]);
}
}
Usando Factories
$user = User::factory()->create();
$admin = User::factory()->admin()->create();
$product = Product::factory()->create(['user_id' => $user->id]);
$products = Product::factory()->count(10)->create();
$draft = Product::factory()->make(); // Não persistido
// Com relacionamentos
…
Perguntas frequentes
O que é TDD?
TDD significa 'Test-Driven Development' (Desenvolvimento Guiado por Testes). É uma forma de programar onde você escreve testes antes de escrever o código real.
O que são 'model factories'?
São como modelos pré-fabricados para criar dados de teste para seus modelos de banco de dados, facilitando a criação de exemplos para seus testes.
O que é PHPUnit ou Pest?
São ferramentas populares em PHP para escrever e executar testes automatizados.
Detalhes
Descrição original do autor
Laravel testing strategies with PHPUnit, Pest, model factories, HTTP tests, Sanctum authentication testing, mocking, and coverage. Use when writing Laravel tests with PHPUnit or Pest, or driving a Laravel feature test-first.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #76
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
webapp-testing
Permite testar aplicações web locais, verificar funcionalidades e depurar o comportamento da interface. Captura screenshots e logs do navegador.
anthropics/skills
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
DietrichGebert/ponytail