When helping with Rails testing:
- 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
- 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
- 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
- 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
- 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
- Test database
- Rails uses a separate test database
- Run migrations: bin/rails db:test:prepare
- Check test/fixtures/ for test data