Minitest

参考:

seattlerb/minitest: minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking – GitHub

blowmage/minitest-rails: Minitest integration for Rails – GitHub

ドキュメント

参考:

minitest Documentation [Official]

minitest-rails Documentation [Official]

Documentation for minitest | RubyDoc.info

Documentation for minitest-rails | RubyDoc.info

使い方

require "minitest/autorun"

class Sample
  def self.greeting
    "Hello, world!"
  end
end

class TestSample < Minitest::Test
  def test_greeting
    assert_equal "Hello, world!", Sample.greeting
  end
end

参考:

Ruby 標準のテスティングフレームワークで手軽にテストコードを書く方法 – Qiita

Minitest でテスト、Rails のテスト (その1) – Qiita

Rails テストコマンド – Qiita

Rails のテスト | Rails 日本語ドキュメント | Ruby STUDIO

テスト(test) – – Railsドキュメント

テストの書き方 | Rubyist Magazine (るびま)

Rails テスティングガイド | Rails ガイド [公式]

概要

参考:

minitest のオススメ基本設定調べてみた – Qiita

導入

参考:

Minitest で始める Ruby のテスト | cloudpack.media

4+ Years of Using Minitest – Wojtek Mach

How I test Rails applications – Patrik on Rails

Use Minitest for Your Next Rails Project | mattbrictson.com

テストを実行する

システムテスト以外のテストを全て実行する

$ rails test

システムテストを実行する

$ rails test:system

もしくは、

$ rails test test/system

全てのテストを実行する

$ rails test test:system

もしくは、

$ rails test test/*

参考:

Minitest でテスト、Rails のテスト (その1) – Qiita

Rails 5.1 で rails test と rails test:system の RAILS_ENV に関する挙動の違いメモ | satococoa’s blog

Test runner in Rails 5 | BigBinary Blog

rake コマンド

全てのテストを実行する

$ rake test

ファイル・ディレクトリを指定してテストを実行する

$ rake test TEST=test/system/*

オプションを指定してテストを実行する

$ rake test TESTOPTS="-v"

シードを指定してテストを実行する

$ rake test TESTOPTS="--seed=1234"

参考:

rails で任意に minitest を実行する方法 – Qiita

モデルのユニットテストとテストコマンド | Serendip

class Rake::TestTask (Ruby 2.5.0)

Adding –verbose flag to rake test doesn’t do anything · Issue #13641 · rails/rails – GitHub

Fix TestTask verbose by mblumtritt · Pull Request #67 · ruby/rake – GitHub

Using the seed value from rake in unit and functional tests – Stack Overflow

-n オプション

参考:

minitest/spec で指定のテストだけを実行する | おもしろwebサービス開発日記

-p/--pride オプション

プログレスをカラフルに表示する

参考:

minitest/pride_plugin.rb at master · seattlerb/minitest – GitHub

Rails test does not recognize the `–pride` flag · Issue #23994 · rails/rails – GitHub

How to color unit tests with lib minitest or Test:Unit? – Stack Overflow

テストの実行順序

※ minitest-rails に対する設定 (ActiveSupport::TestCase 内での実行順序)

ランダムに実行する (デフォルト)

config.active_support.test_order = :random

ソートして実行する

config.active_support.test_order = :sorted

参考:

Test::Unit におけるテストの順番 | Alone Like a Rhinoceros Horn

test_order – ActiveSupport::TestCase | Ruby on Rails API [Official]

Pass config.active_support.test_order to minitest · Issue #205 · blowmage/minitest-rails – GitHub

setup/teardown

参考:

Rails の Test::Unit で setup を定義する 3 つの方法 | passingloop

Test::Unit でテストを書く – Qiita

instance method MiniTest::Unit::TestCase#setup (Ruby 2.1.0)

4 Fantastic Ways to Set Up State in Minitest | Chris Said So

Method: Minitest::Test::LifecycleHooks#setup — Documentation for minitest | RubyDoc.info

Method: Minitest::Test::LifecycleHooks#teardown — Documentation for minitest | RubyDoc.info

run

参考:

Method: Minitest::Test#run — Documentation for minitest | RubyDoc.info

How can I stub in setup method with Minitest? – Stack Overflow

モック/スタブを使う

参考:

minitest で mock や stub を使う | おもしろwebサービス開発日記

minitest で stub, mock を使う | blog.jiikko.com

Mocking in Ruby with Minitest – Semaphore

Mock

参考:

Class: Minitest::Mock — Documentation for minitest | RubyDoc.info

expect

参考:

Method: Minitest::Mock#expect — Documentation for minitest | RubyDoc.info

verify

参考:

Method: Minitest::Mock#verify — Documentation for minitest | RubyDoc.info

stub

参考:

minitest でモジュールメソッドに stub を使う – Qiita

Method: Object#stub — Documentation for minitest | RubyDoc.info

Stubbing method in ActionDispatch::IntegrationTest – Stack Overflow

assert_select

参考:

Rails minitest controller にてある条件のタグがないことを判断する方法|teratail

The opposite of assert_select? – Stack Overflow

skip

参考:

Is it possible to mark a test as pending in MiniTest? – Stack Overflow

file_fixture

参考:

Use file_fixture to access test files in Rails 5 | BigBinary Blog

ルーティングをテストする

参考:

How to write routing tests? · Issue #22 · metaskills/minitest-spec-rails – GitHub

How can I test Rails Routes with Minitest? – Stack Overflow

Is it still advisable to test routes in Rails 4 with Minitest? – Stack Overflow

エンジンの開発でテストを実行する

システムテスト以外のテストを全て実行する

$ RAILS_ENV=test rails app:test

システムテストを実行する

$ RAILS_ENV=test rails app:test:system

全てのテストを実行する

$ RAILS_ENV=test rails app:test app:test:system

エンジンのコントローラーをテストする

参考:

isolated engine, routing helpers, testing? · Issue #6573 · rails/rails – GitHub

Rails Engine (4.0.2) routing methods fail in controllers using MiniTest – Stack Overflow

エンジンのテストで url_helpers を使う

エンジンのテスト

module MyEngine
  class ExpampleTest < ActionDispatch::IntegrationTest
    include Engine.routes.url_helpers

    test "should get index" do
      get example_index_url
      assert_response :success
    end
  end
end

参考:

How to access URL helper from rails module – Stack Overflow

Mocha

参考:

freerange/mocha: Mocha is a mocking and stubbing library for Ruby – GitHub

minitest-excludes

参考:

seattlerb/minitest-excludes – GitHub

minitest-stub-const

参考:

adammck/minitest-stub-const: Stub constants for the duration of a block in MiniTest – GitHub

Konacha

参考:

jfirebaugh/konacha: Test your Rails application’s JavaScript with the mocha test framework and chai assertion library – GitHub

Combustion

参考:

pat/combustion: Simple, elegant testing for Rails Engines – GitHub

テストが失敗した場合にタスクがエラー終了する (仕様)

参考:

No errors when test passes, but “Command failed with status (1)” error when test fails · Issue #137 · seattlerb/minitest – GitHub

test_helper が読み込めない

test_helper.rb があるディレクトリにパスが通っていない

対処法:

アプリケーションの場合

$LOAD_PATH.unshift File.expand_path("test", Rails.root)

エンジンの場合

$LOAD_PATH.unshift File.expand_path("test", MyEngine::Engine.root)

参考:

got “cannot load such file — test_helper” | Technotes

cannot load such file — test_helper if test case run using ‘ruby’ instead of ‘rake test’ – Stack Overflow

チュートリアル

参考:

「Ruby on Rails on Minitest」を翻訳してみた | give IT a try

Tips

参考:

テストを不安定にする5つの残念な書き方 翻訳 | TechRacho

私が Minitest と Rails の Fixtures にハマった7つの理由 | 有頂天Ruby

Dress Up Your Minitest Output | Chris Said So

Tagged:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です