Search⌘ K
AI Features

Bypassing Rails in Minitest

Explore methods to bypass Rails in Minitest to increase test speed and efficiency. Understand how to set up testing helpers, implement database cleanup after tests, and avoid default Rails rake tasks, enabling you to run faster, more isolated tests in Ruby on Rails applications.

Minitest bypassing Rails for speed

The same Rails-bypassing test technique works in Minitest, but there are some minor differences based on how the RSpec executable works versus the way Minitest works.

In Minitest, the active_record_test_helper looks like this:

# SQLite. Versions 3.8.0 and up are supported.
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: sqlite3
  database: db/development.sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  pool: 5
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3
Adding active_record_test_helper.rb file in /test directory

This is based on a Minitest version from Robert Evans on GitHub.

The basic setup is ...