Help with Rails testing including unit tests, integration tests, fixtures, and debugging test failures. Use when working on tests or debugging test issues.
Content & Writing
602 Stars
270 Forks
Updated Dec 4, 2025, 11:48 AM
Why Use This
This skill provides specialized capabilities for etewiah's codebase.
Use Cases
Developing new features in the etewiah repository
Refactoring existing code to follow etewiah standards
Understanding and working with etewiah's codebase structure
---
name: rails-testing
description: Help with Rails testing including unit tests, integration tests, fixtures, and debugging test failures. Use when working on tests or debugging test issues.
---
# 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