rails-testing

SKILL.md

Rails Testing

Instructions

When helping with Rails testing:

  1. Understand the test structure

    • Check existing tests in test/ directory to understand project conventions
    • Look for test patterns in similar files (models, controllers, etc.)
    • Respect the project's test organization and naming conventions
  2. Running tests

    • Run all tests: bin/rails test
    • Run specific file: bin/rails test test/models/user_test.rb
    • Run specific test: bin/rails test test/models/user_test.rb:5 (line number)
    • Run with verbose output: bin/rails test -v
    • Use --fail-fast to stop on first failure: bin/rails test --fail-fast
  3. Test types in Rails

    • Models: Test business logic, validations, associations
    • Controllers: Test request/response, status codes, redirects, instance variables
    • Integration Tests: Test full workflows across multiple components
    • Fixtures: Use for test data setup
  4. Writing effective tests

    • Use descriptive test names: test_should_create_valid_user
    • Test both success and failure cases
    • Keep tests focused and isolated
    • Use fixtures for shared test data
    • Clean up side effects after tests
  5. Debugging test failures

    • Read error messages carefully - they usually point to the issue
    • Check if test data is set up correctly (fixtures, setup methods)
    • Verify assertions match the actual behavior
    • Use puts or p to inspect values
    • Check test isolation - tests shouldn't depend on each other
  6. Test database

    • Rails uses a separate test database
    • Run migrations: bin/rails db:test:prepare
    • Check test/fixtures/ for test data

Examples

When user asks: "How do I test this model?" → Create a model test in test/models/ following existing patterns, test validations and associations

When user asks: "Why is this test failing?" → Analyze the error, check test data setup, verify assertions, suggest fixes

When user asks: "Add tests for this controller" → Create controller tests in test/controllers/, test CRUD actions and edge cases

When user asks: "How do I set up test data?" → Suggest fixtures in test/fixtures/ or setup methods in the test file

Weekly Installs
6
GitHub Stars
601
First Seen
Jan 24, 2026
Installed on
opencode5
claude-code5
cursor5
gemini-cli4
antigravity4
github-copilot4