AgentSkillsCN

s-test

使用Busted和Mechanic测试框架为WoW插件编写并运行单元测试。涵盖测试结构、模拟WoW API和覆盖率分析。当添加测试、用回归测试修复错误或提高覆盖率时使用。触发词:测试、单元测试、覆盖率、Busted、mock、TDD、sandbox。

SKILL.md
--- frontmatter
name: s-test
description: >
  Write and run unit tests for WoW addons using Busted and the Mechanic test
  framework. Covers test structure, mocking WoW APIs, and coverage analysis.
  Use when adding tests, fixing bugs with regression tests, or improving coverage.
  Triggers: test, unit test, coverage, Busted, mock, TDD, sandbox.

Testing WoW Addons

Expert guidance for testing WoW addons using Sandbox, Desktop, and In-Game methods.

Related Commands

  • c-test - Run unit tests workflow
  • c-review - Full code review (includes test step)

CLI Commands (Use These First)

MANDATORY: Always use CLI commands before manual exploration.

TaskCommand
Generate Stubsmech call sandbox.generate
Run Sandbox Testsmech call sandbox.test -i '{"addon": "MyAddon"}'
Run Busted Testsmech call addon.test -i '{"addon": "MyAddon"}'
Test Coveragemech call addon.test -i '{"addon": "MyAddon", "coverage": true}'
Sandbox Statusmech call sandbox.status

Capabilities

  1. Sandbox Testing — Fast, offline tests using generated WoW API stubs
  2. Desktop Testing (Busted) — Integration tests with custom mocks
  3. In-Game Testing — Runtime verification via MechanicLib registration
  4. Coverage Analysis — Identify untested code paths

Routing Logic

Request typeLoad reference
Sandbox, Busted, In-Game guides../../docs/integration/testing.md
Busted spec patternsreferences/busted-patterns.md
Mocking WoW APIsreferences/wow-mocking.md
MechanicLib test registration../../docs/integration/mechaniclib.md

Quick Reference

Recommended Workflow

  1. Sandbox (Core): Fast feedback for business logic.
  2. Desktop (Integration): Test interactions between modules.
  3. In-Game (Verification): Final check against live APIs.

Example Sandbox Test

lua
describe("MyAddon Core", function()
    it("calculates values correctly", function()
        local result = Core.Calculate(10, 20)
        assert.equals(30, result)
    end)
end)

Running Tests

bash
# Generate stubs once
mech call sandbox.generate

# Run tests frequently
mech call sandbox.test -i '{"addon": "MyAddon"}'