定制 fabtec/test-craft 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fabtec/test-craft

最新稳定版本:v1.0.0

Composer 安装命令:

composer require fabtec/test-craft

包简介

Pacote para facilitar a criação de testes

README 文档

README

Introdução

O TestCraft é um pacote para Laravel que facilita a criação de classes de teste para controllers do tipo resource. Ele inclui um comando de terminal para geração automática de testes e uma classe base que abstrai as operações comuns de testes em controllers resource.

Este pacote foi desenvolvido com o objetivo de:

  • Padronizar a escrita de testes em projetos Laravel.
  • Agilizar o processo de desenvolvimento, reduzindo a necessidade de criar testes manualmente.
  • Aumentar a eficiência no ciclo de desenvolvimento, garantindo que testes essenciais sejam gerados automaticamente.

Instalação

Instale o pacote executando:

composer require fabtec/test-craft --dev

Uso

Comando testcraft:create

O comando principal do pacote é testcraft:create, que gera uma classe de teste para um controlador resource com base no nome da entidade.

Sintaxe:

php artisan testcraft:create {entity}

Parâmetros:

  • {entity}: Nome da entidade relacionada ao controller (exemplo: User, Product).

O que o Comando Faz:

  1. Valida Requisitos:

    • Verifica a existência do modelo: App\Models\{Entity}.
    • Verifica a existência da fábrica: Database\Factories\{Entity}Factory.
    • Verifica a existência do controller: App\Http\Controllers\{Entity}Controller.
    • Verifica se as rotas esperadas do padrão resource estão registradas.
  2. Gera a Classe de Teste:

    • Cria a classe no diretório tests/Feature/Http/Controllers.
    • O nome do arquivo será {Entity}ControllerTest.php.
  3. Configura os Testes:

    • Define a classe do modelo ($modelClass).
    • Define o prefixo de rota ($routePrefix).
    • Inclui métodos para geração de dados utilizados nos testes (generateData()).

Classe Base: ResourceControllerTestCase

As classes geradas herdam de ResourceControllerTestCase, que abstrai as operações comuns de testes em controllers resource.

Atributos Customizáveis

  • $modelClass:

    • Define a classe do modelo relacionado ao controller.
    • Exemplo:
      protected string $modelClass = \App\Models\Product::class;
  • $routePrefix:

    • Define o prefixo das rotas relacionadas ao controller.
    • Exemplo:
      protected string $routePrefix = 'products';

Métodos Customizáveis

  • generateData():

    • Retorna os dados necessários para criar ou atualizar registros nos testes.
    • É utilizado nos testes das rotas store e update.
    • Exemplo:
      protected function generateData(): array
      {
          return [
              'name' => 'Product Test',
              'price' => 100.0,
          ];
      }
  • generateCreateData() e generateUpdateData():

    • Herdados de ResourceControllerTestCase.
    • Delegam por padrão para generateData() mas podem ser sobrescritos para fornecer dados diferentes.
    • Exemplo:
      protected function generateCreateData(): array
      {
          return [
              'name' => 'New Product',
              'price' => 150.0,
          ];
      }

Exemplo de Classe Gerada

Abaixo está um exemplo de uma classe de teste gerada para o ProductController:

namespace Tests\Feature\Http\Controllers;

use App\Models\Product;
use FabTec\TestCraft\ResourceControllerTestCase;

class ProductControllerTest extends ResourceControllerTestCase
{
    /**
     * {@inheritDoc}
     */
    protected string $modelClass = Product::class;

    /**
     * {@inheritDoc}
     */
    protected string $routePrefix = 'products';

    /**
     * {@inheritDoc}
     */
    protected function generateData(): array
    {
        return [
            'name' => 'Product Test',
            'price' => 100.0,
        ];
    }
}

O que esta Classe Faz?

  • Testa automaticamente as rotas padrão de controllers resource:
    • index: Lista todos os registros.
    • create: Exibe o formulário de criação.
    • store: Cria um novo registro.
    • show: Exibe um registro específico.
    • edit: Exibe o formulário de edição.
    • update: Atualiza um registro.
    • destroy: Exclui um registro.

Contribuição

Para contribuir com o TestCraft, abra um pull request ou reporte problemas no repositório oficial do GitHub.

Autores

Licença

Este pacote é licenciado sob a MIT License.

统计信息

  • 总下载量: 25
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-12-04