AgentSkillsCN

ocobo-tests

在 OCOBO-BACK 中编写并运行 PHPUnit 测试的指南,包括针对 Sanctum 的端点测试、对 ApiResponseTrait 形状的断言,以及 RefreshDatabase 的最佳实践。当用户提出“测试”“phpunit”“功能测试”“测试端点”或测试失败时,请使用本指南。

SKILL.md
--- frontmatter
name: ocobo-tests
description: Guía para crear y ejecutar tests PHPUnit en OCOBO-BACK, incluyendo tests de endpoints con Sanctum, aserciones del shape de ApiResponseTrait y recomendaciones de RefreshDatabase. Usar cuando el usuario pida “tests”, “phpunit”, “feature test”, “probar endpoint”, o falle un test.

OCOBO tests (PHPUnit)

Dónde probar

  • Endpoints/API: tests/Feature
  • Lógica pura: tests/Unit

Ejecutar

  • Todo: composer test
  • Filtrar: composer test -- --filter NombreDelTest

Patrón para endpoints con Sanctum

  1. Crear usuario (factory si existe, o crear directo si no).
  2. Autenticar:
    • \Laravel\Sanctum\Sanctum::actingAs($user);
  3. Llamar endpoint y validar:
    • HTTP status
    • JSON shape: status, message, data|error

Plantilla mínima (Feature)

php
<?php

namespace Tests\Feature;

use Tests\TestCase;
use App\Models\User;
use Laravel\Sanctum\Sanctum;

class EndpointTest extends TestCase
{
    public function test_endpoint_retorna_shape_estandar(): void
    {
        $user = User::first() ?? User::factory()->create();
        Sanctum::actingAs($user);

        $response = $this->getJson('/api/...');

        $response->assertStatus(200)
            ->assertJson(['status' => true])
            ->assertJsonStructure(['status', 'message', 'data']);
    }
}