Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计通过

minitest-coder迷你测试编码员

Agent Skill

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

总安装

847

周安装

36

GitHub Stars

37

下载量

297
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:minitest-coder(迷你测试编码员)
来源仓库:https://github.com/majesticlabs-dev/majestic-marketplace
仓库路径:skills/minitest-coder
安装命令:
npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill minitest-coder
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill minitest-coder

简介

用于辅助测试设计、自动化测试、用例整理和回归验证。

  • 适合编写单元测试、端到端测试、测试计划或根据失败日志定位问题。
  • 使用时需确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑。
  • 安装方式:github,通过 npx skills add 命令从 majesticlabs-dev/majestic-marketplace 仓库添加。
  • 适用于 Codex、Claude、Cursor、Gemini CLI 等宿主环境。

SKILL.md

Minitest Coder

Core Philosophy

  • AAA Pattern: Arrange-Act-Assert structure for clarity
  • Behavior over Implementation: Test what code does, not how
  • Isolation: Tests should be independent
  • Descriptive Names: Clear test descriptions
  • Coverage: Test happy paths AND edge cases
  • Fast Tests: Minimize database operations
  • Fixtures: Use fixtures for test data

Minitest Styles

StyleBest ForSyntax
TraditionalSimple unit teststest "description"
SpecComplex scenarios with contextsdescribe/it with let/subject

Traditional Style

class UserTest < ActiveSupport::TestCase
  test "validates presence of name" do
    user = User.new
    assert_not user.valid?
    assert_includes user.errors[:name], "can't be blank"
  end
end

Spec Style

class UserTest < ActiveSupport::TestCase
  describe "#full_name" do
    subject { user.full_name }
    let(:user) { User.new(first_name: "Buffy", last_name:) }

    describe "with last name" do
      let(:last_name) { "Summers" }

      it "returns full name" do
        assert_equal "Buffy Summers", subject
      end
    end
  end
end

Test Organization

File Structure

  • test/models/ - Model unit tests
  • test/services/ - Service object tests
  • test/integration/ - Full-stack tests
  • test/mailers/ - Mailer tests
  • test/jobs/ - Background job tests
  • test/fixtures/ - Test data
  • test/test_helper.rb - Configuration

Naming Conventions

  • Mirror app structure: app/models/user.rbtest/models/user_test.rb
  • Use fully qualified namespace: class Users::ProfileServiceTest
  • Don't add require 'test_helper' (auto-imported)

Spec Style Patterns

See references/spec-patterns.md for detailed examples.

PatternUse Case
subject {...}Method under test
let(:name) {...}Lazy-evaluated data
describe "context"Group related tests (max 3 levels)
before {...}Complex setup
describe "#process" do
  subject { processor.process }
  let(:processor) { OrderProcessor.new(order) }
  let(:order) { orders(:paid_order) }

  it "succeeds" do
    assert subject.success?
  end
end

Fixtures

# test/fixtures/users.yml
alice:
  name: Alice Smith
  email: alice@example.com
  created_at: <%= 2.days.ago %>
class UserTest < ActiveSupport::TestCase
  fixtures :users

  test "validates uniqueness" do
    duplicate = User.new(email: users(:alice).email)
    assert_not duplicate.valid?
  end
end

Mocking and Stubbing

See references/spec-patterns.md for detailed examples.

MethodPurpose
Object.stub:method, valueStub return value
Minitest::Mock.newVerify method calls
test "processes payment" do
  PaymentGateway.stub :charge, true do
    processor = OrderProcessor.new(order)
    assert processor.process
  end
end

Assertions Quick Reference

Basic Assertions

# Boolean
assert user.valid?
assert_not user.admin?

# Equality
assert_equal "Alice", user.name
assert_nil user.deleted_at

# Collections
assert_includes users, admin_user
assert_empty order.items

# Exceptions
assert_raises ActiveRecord::RecordInvalid do
  user.save!
end

Rails Assertions

# Changes
assert_changes -> { user.reload.status }, to: "active" do
  user.activate!
end

assert_difference "User.count", 1 do
  User.create(name: "Charlie")
end

# Responses
assert_response :success
assert_redirected_to user_path(user)

AAA Pattern

test "processes refund" do
  # Arrange
  order = orders(:completed_order)
  original_balance = order.user.account_balance

  # Act
  result = order.process_refund

  # Assert
  assert result.success?
  assert_equal "refunded", order.reload.status
end

Spec style with subject:

describe "#process_refund" do
  subject { order.process_refund }
  let(:order) { orders(:completed_order) }

  it "updates status" do
    subject
    assert_equal "refunded", order.reload.status
  end

  it "credits user" do
    assert_changes -> { order.user.reload.account_balance }, by: order.total do
      subject
    end
  end
end

Test Coverage Standards

TypeTest For
ModelsValidations, associations, scopes, callbacks, methods
ServicesHappy path, sad path, edge cases, external integrations
ControllersStatus codes, redirects, parameter handling
JobsExecution, retry logic, error handling

Coverage Example

class UserTest < ActiveSupport::TestCase
  # Validations
  test "validates presence of name" do
    user = User.new(email: "test@example.com")
    assert_not user.valid?
    assert_includes user.errors[:name], "can't be blank"
  end

  # Methods
  describe "#full_name" do
    subject { user.full_name }
    let(:user) { User.new(first_name: "Alice", last_name: "Smith") }

    it "returns full name" do
      assert_equal "Alice Smith", subject
    end

    describe "without last name" do
      let(:user) { User.new(first_name: "Alice") }

      it "returns first name only" do
        assert_equal "Alice", subject
      end
    end
  end
end

Advanced Patterns

See references/advanced-patterns.md for production-tested patterns from 37signals.

PatternProblem Solved
Current.account fixturesMulti-tenant URL isolation
Assertion-validating helpersEarly failure with clear messages
Deterministic UUIDsPredictable fixture ordering
VCR timestamp filteringReusable API cassettes
Thread-based concurrencyRace condition detection
Adapter-aware helpersSQLite/MySQL compatibility

Anti-Patterns

See references/anti-patterns.md for detailed examples.

Anti-PatternWhy Bad
require 'test_helper'Auto-imported
>3 nesting levelsUnreadable output
@ivars instead of letState leakage
Missing subjectRepetitive code
assert x.include?(y)Use assert_includes
Testing private methodsImplementation coupling
Not using fixturesSlow tests

Best Practices Checklist

Organization:

  • Files mirror app structure
  • NOT adding require 'test_helper'
  • Using fully qualified namespace

Style Choice:

  • Traditional for simple tests
  • Spec for complex contexts
  • Max 3 nesting levels

Test Data:

  • Using fixtures (not factories)
  • Using let for shared data
  • Using subject for method under test

Assertions:

  • Correct assertion methods
  • Rails helpers (assert_changes, assert_difference)
  • Testing behavior, not implementation

Coverage:

  • Happy path tested
  • Sad path tested
  • Edge cases covered

When to Choose Style

Traditional: Simple validations, straightforward tests, no shared setup

Spec: Multiple contexts, lazy evaluation needed, nested scenarios, reusable subject

Can mix both in the same file if it improves clarity.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

38.69%
按下载量换算115

Claude

29.88%
按下载量换算89

Cursor

18.13%
按下载量换算54

Gemini CLI

9.22%
按下载量换算27

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills