いくつかのプロジェクトでRSpecを使用した後、ミニテスト/ユニットを実行します。私はこれまでのところ気に入っていますが、describe/contextブロックを使用してテスト/仕様を論理的な方法でグループ化することはできません。
Minitest/specがこの機能を提供することは知っていますが、そのminitest/unitがベアボーンRubyに少し近いと感じているのが好きです。
ミニテスト/ユニットの説明/コンテキストサポートを提供する宝石はありますか?または、minitest/unitにある整理されていない長いテストファイルをそのまま使用する必要がありますか?
私は、RSpecから同じ質問に苦闘しているミニテストに来ている何人かの人々を知っています。彼らは、describe/contextブロックを使用してネストする機能を気に入っており、ミニテストを続行したいと考えています。いくつかの解決策があります:
context
ブロックがないことです。ただし、代わりにdescribe
を簡単に使用でき、すべて期待どおりに機能します。以下は、テストファイルの構成例です。
test/
models/
user/
authentication_test.rb
email_test.rb
reservation_test.rb
user_test.rb
username_test.rb
仕様DSLを使用しているか、xUnitスタイルを使用しているかにかかわらず、この構造を使用します。 spec DSLを使用するときは、記述ブロックでテストする対象を次のように指定します。
require "minitest_helper"
describe User, :authentications do
before do
# ...
複数のクラスを1つのテストファイルにスローすることもできます。
module PizzaTest
class Isolation < ActiveSupport::TestCase
test "is awesome by default" do
assert Pizza.new.awesome?
end
end
class Integration < ActiveSupport::TestCase
fixtures :all
test "is awesome too" do
pizzas('one-with-everything').awesome?
end
end
end
そしてテストクラスを入れ子にする:
class PizzaTest < ActiveSupport::TestCase
test "is awesome by default" do
assert Pizza.new.awesome?
end
class Integration < ActiveSupport::TestCase
fixtures :all
test "is awesome too" do
assert pizzas('one-with-everything').awesome?
end
end
end
私はこの方法(ほんの少しだけ)を好みますが、従う方が簡単だと思います。
class ConventionalNameTest < ActiveSupport::TestCase
class ContextTest < ConventionalNameTest
# so much stuff...
end
class AnotherContextTest < ConventionalNameTest
# and some more...
end