Agent Skillsploi/roadmap › pest-testing

pest-testing

GitHub

专为 Laravel 项目提供 Pest PHP 测试技能,涵盖测试编写、修复、重构及 TDD 工作流。支持 Pest 3 特性如架构测试、数据集和断言规范,指导正确使用 artisan 命令及测试组织规范。

.claude/skills/pest-testing/SKILL.md ploi/roadmap

Trigger Scenarios

用户请求编写或编辑测试代码 需要修复因代码变更导致失败的测试 将 PHPUnit 测试转换为 Pest 格式 添加测试数据集或进行 TDD 开发

Install

npx skills add ploi/roadmap --skill pest-testing -g -y
More Options

Non-standard path

npx skills add https://github.com/ploi/roadmap/tree/main/.claude/skills/pest-testing -g -y

Use without installing

npx skills use ploi/roadmap@pest-testing

指定 Agent (Claude Code)

npx skills add ploi/roadmap --skill pest-testing -a claude-code -g -y

安装 repo 全部 skill

npx skills add ploi/roadmap --all -g -y

预览 repo 内 skill

npx skills add ploi/roadmap --list

SKILL.md

Frontmatter
{
    "name": "pest-testing",
    "license": "MIT",
    "metadata": {
        "author": "laravel"
    },
    "description": "Use this skill for Pest PHP testing in Laravel projects only. Trigger whenever any test is being written, edited, fixed, or refactored — including fixing tests that broke after a code change, adding assertions, converting PHPUnit to Pest, adding datasets, and TDD workflows. Always activate when the user asks how to write something in Pest, mentions test files or directories (tests\/Feature, tests\/Unit) or architecture tests. Covers: test()\/it()\/expect() syntax, datasets, mocking, browser testing, arch(), Livewire component tests, RefreshDatabase, and all Pest 3 features. Do not use for editing factories, seeders, migrations, controllers, models, or non-test PHP code."
}

Pest Testing 3

Documentation

Use search-docs for detailed Pest 3 patterns and documentation.

Basic Usage

Creating Tests

All tests must be written using Pest. Use php artisan make:test --pest {name}.

The {name} argument should include only the path and test name, but should not include the test suite.

  • Incorrect: php artisan make:test --pest Feature/SomeFeatureTest will generate tests/Feature/Feature/SomeFeatureTest.php
  • Correct: php artisan make:test --pest SomeControllerTest will generate tests/Feature/SomeControllerTest.php
  • Incorrect: php artisan make:test --pest --unit Unit/SomeServiceTest will generate tests/Unit/Unit/SomeServiceTest.php
  • Correct: php artisan make:test --pest --unit SomeServiceTest will generate tests/Unit/SomeServiceTest.php

Test Organization

  • Tests live in the tests/Feature and tests/Unit directories.
  • Do NOT remove tests without approval - these are core application code.
  • Test happy paths, failure paths, and edge cases.

Basic Test Structure

Pest supports both test() and it() functions. Before writing new tests, check existing test files in the same directory to match the project's convention. Use test() if existing tests use test(), or it() if they use it().

it('is true', function () {
    expect(true)->toBeTrue();
});

Running Tests

  • Run minimal tests with filter before finalizing: php artisan test --compact --filter=testName.
  • Run all tests: php artisan test --compact.
  • Run file: php artisan test --compact tests/Feature/ExampleTest.php.

Assertions

Use specific assertions (assertSuccessful(), assertNotFound()) instead of assertStatus():

it('returns all', function () {
    $this->postJson('/api/docs', [])->assertSuccessful();
});
Use Instead of
assertSuccessful() assertStatus(200)
assertNotFound() assertStatus(404)
assertForbidden() assertStatus(403)

Mocking

Import mock function before use: use function Pest\Laravel\mock;

Datasets

Use datasets for repetitive tests (validation rules, etc.):

it('has emails', function (string $email) {
    expect($email)->not->toBeEmpty();
})->with([
    'james' => 'james@laravel.com',
    'taylor' => 'taylor@laravel.com',
]);

Pest 3 Features

Architecture Testing

Pest 3 includes architecture testing to enforce code conventions:

arch('controllers')
    ->expect('App\Http\Controllers')
    ->toExtendNothing()
    ->toHaveSuffix('Controller');

arch('models')
    ->expect('App\Models')
    ->toExtend('Illuminate\Database\Eloquent\Model');

arch('no debugging')
    ->expect(['dd', 'dump', 'ray'])
    ->not->toBeUsed();

Type Coverage

Pest 3 provides improved type coverage analysis. Run with --type-coverage flag.

Common Pitfalls

  • Not importing use function Pest\Laravel\mock; before using mock
  • Using assertStatus(200) instead of assertSuccessful()
  • Forgetting datasets for repetitive validation tests
  • Deleting tests without approval
  • Prefixing Feature/ or Unit/ in {name} when using make:test

Version History

  • a889594 Current 2026-08-20 13:00

Same Skill Collection

.claude/skills/socialite-development/SKILL.md
.claude/skills/infer-conventions/SKILL.md
.claude/skills/laravel-best-practices/SKILL.md
.claude/skills/octane-development/SKILL.md
.claude/skills/tailwindcss-development/SKILL.md

Metadata

Files
0
Version
dceeb89
Hash
947abc72
Indexed
2026-08-20 13:00

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-23 09:12
浙ICP备14020137号-1