RSpec から minitest に来て、同じ質問に苦しんでいる人を何人か知っています。彼らは、describe/context ブロックを使用してネストする機能を気に入っており、最小限のテストを続けたいと考えています。いくつかの解決策があります。
- minitest の仕様 DSL を使用する: 多少の違いはありますが、仕様 DSL は、rspec DSL の優れた部分のほとんど (すべて?) を提供します。大きな違いは、
context
ブロックがないことです。しかし、その代わりに簡単に使用できdescribe
、すべてが期待どおりに機能します。
- ディレクトリとファイルを使用する: 私はこのオプションを好みます。仕様の DSL を使用しているか、従来の xUnit スタイルを使用しているかに関係なく、300 行のテスト ファイルをスクロールするのは好きではありません。無関係なテストを入れ子にすることは役に立ちません。コードを理解するための同じ規則がテストに適用されます。だからそれを壊してください。ディレクトリを作成し、その中にいくつかのファイルを配置します。
私のテストファイルがどのように編成されているかの例を次に示します。
test/
models/
user/
authentication_test.rb
email_test.rb
reservation_test.rb
user_test.rb
username_test.rb
この構造は、仕様の DSL を使用する場合でも xUnit スタイルを使用する場合でも使用します。spec DSL を使用する場合、describe ブロックでテスト対象を次のように指定します。
require "minitest_helper"
describe User, :authentications do
before do
# ...