Rails アプリから単一のクラスをgemに抽出しました。非常に単純ですが、もちろん完全にテストしたいと思います (私は rspec を使用しています)。
このクラスは、簡単な日付計算を行います。Rails には依存していませんが、Rails アプリで開始され、現在も使用されているため、可能な場合は ActiveSupport のタイム ゾーン対応メソッドを使用します。ただし、ActiveSupport が利用できない場合は、std-libDate
メソッドを使用する必要があります。
具体的には、これは 1 つの場所でのみ行われます: オプションの引数を「今日の日付」にデフォルト設定する:
arg ||= if Date.respond_to?(:current)
Date.current # use ActiveSupport's time zone-aware mixin if possible
else
Date.today # stdlib fallback
end
質問: これを適切にテストするにはどうすればよいですか? で ActiveSupport が必要な場合は、spec_helper.rb
明らかに常にそれを使用します。私がどこでもそれを必要としないなら、決してそれを使用しません。また、単一の例のグループに必要な場合、AS がいつ必要になるか分からないため、rspec のランダムな実行順序によりテストが予測不能になります。
before(:all)
ネストされたグループは(私が信じている)最も高いものから最も深いものまで処理されるため、ネストされたグループでそれを要求することができます。しかし、それはひどくエレガントではないようです。
スペックを 2 つのファイルに分割して、別々に実行することもできますが、これも不要のようです。
rspec のランダムな順序付けを無効にすることもできますが、それは一種の逆行です。なるべくランダムにした方がいいと思います。
何か案は?