返回 Skill 列表
extension
分类: 开发与工程无需 API Key

s-test

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

person作者: jakexiaohubgithub

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.

| Task | Command | |------|---------| | Generate Stubs | mech call sandbox.generate | | Run Sandbox Tests | mech call sandbox.test -i '{"addon": "MyAddon"}' | | Run Busted Tests | mech call addon.test -i '{"addon": "MyAddon"}' | | Test Coverage | mech call addon.test -i '{"addon": "MyAddon", "coverage": true}' | | Sandbox Status | mech 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 type | Load reference | |--------------|----------------| | Sandbox, Busted, In-Game guides | ../../docs/integration/testing.md | | Busted spec patterns | references/busted-patterns.md | | Mocking WoW APIs | references/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

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

Running Tests

# Generate stubs once
mech call sandbox.generate

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