rspec

📁 g1joshi/agent-skills 📅 3 days ago
1
总安装量
1
周安装量
#45790
全站排名
安装命令
npx skills add https://github.com/g1joshi/agent-skills --skill rspec

Agent 安装分布

mcpjam 1
claude-code 1
replit 1
junie 1
zencoder 1

Skill 文档

RSpec

RSpec is the primary testing tool for Ruby (especially Rails). It focuses on “Behavior Driven Development” (BDD), making tests read like documentation specifications.

When to Use

  • Ruby/Rails Projects: The community standard (over Minitest) for complex apps.
  • Documentation: You want tests that generate readable specs.

Quick Start

# user_spec.rb
RSpec.describe User, type: :model do
  context "when newly created" do
    it "has no name" do
      user = User.new
      expect(user.name).to be_nil
    end
  end
end

Core Concepts

describe vs context

  • describe: Describes the thing being tested (Class, Method).
  • context: Describes the condition (“when user is logged in”).

Let and Let!

Lazy-loaded variables.

  • let(:user) { User.create }: Created only when referenced.
  • let!(:user) { User.create }: Created before each test (eager).

Matchers

expect(x).to eq(y), be_valid, change { User.count }.by(1).

Best Practices (2025)

Do:

  • Use subject: Define the subject of the test explicitly.
  • Keep it blocks short: One expectation per block ideally.
  • Use FactoryBot: Don’t use Fixtures (YAML). Use Factories to build test data.

Don’t:

  • Don’t overuse before(:all): It introduces shared state between examples. Use before(:each) (default).
  • Don’t put logic in specs: Specs should verify behavior, not calculate it.

References