Minitest::Utils

Some utilities for your Minitest day-to-day usage.

Includes:

  • A better reporter (see screenshot below)
  • A TestNotifier reporter
  • Some Rails niceties (set up FactoryGirl, WebMock and Capybara)
  • Add a t and l methods (i18n)

Installation

Add this line to your application's Gemfile:

gem 'minitest-utils'

And then execute:

$ bundle

Or install it yourself as:

$ gem install minitest-utils

Defining tests

This gem adds the Minitest::Test.test method, so you can easy define your methods like the following:

class SampleTest < Minitest::Test
  test 'useless test' do
    assert true
  end
end

This is equivalent to defining a method named test_useless_test. You can also skip the block, which will define a flunk call.

You can also define setup and teardown steps.

class SampleTest < Minitest::Test
  setup do
    DB.connect
  end

  teardown do
    DB.disconnect
  end

  test 'useless test' do
    assert true
  end
end

Finally, you can also use let.

class SampleTest < Minitest::Test
  let(:token) { 'secret' }

  test 'set token' do
    assert_equal 'secret', token
  end
end

Screenshots

Rails extensions

minitest-utils sets up some things for your Rails application.

  • Capybara: includes Capybara::DSL, sets default driver before every test, resets session and creates a helper method for setting JavaScript driver. If you have poltergeist installed, it will be used as the default JavaScript driver.
  • FactoryGirl: adds methods to ActiveSupport::TestCase.
  • WebMock: disables external requests (except for codeclimate) and tracks all requests on WebMock.requests.
  • locale routes: sets Rails.application.routes.default_url_options[:locale] with your current locale.
  • DatabaseCleaner: configure database before running each test. You can configure the strategy by settings DatabaseCleaner.strategy = :truncation, for instance. It defaults to :deletion.
  • Other: t and l alias to I18n.
class SignupTest < ActionDispatch::IntegrationTtest
  use_javascript! #=> enables JavaScript driver
end

Also, if you're using routes like :locale scope, you can load this file to automatically set your route's :locale param.

require 'minitest/utils/rails/locale'

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release to create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

  1. Fork it ( https://github.com/fnando/minitest-utils/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request