現在、リファクタリングの真っ最中で、次のことに苦労しています。
私はこのようなクラスを持っています:
class Example
def self.some_method
if Rails.env.test?
true
else
hit_external_service
end
end
end
さて、本番コードとテストコードをクラスに混在させるのはあまり良くないと思います。私たちはモカを使用しているので、このメソッドは次のようにあちこちで呼び出されるため、条件付きロジックを削除して、テスト スイート全体のスタブを設定することを考えました。
class ActiveSupport::TestCase
setup do
Example.stub(:some_method).returns(true)
end
end
しかし、元のメソッドをテストしたいときは、非常に汚いように見える「スタブを解除」する必要があるため、これを行う方法に固執しています。
また、外部サービスを別のクラスにヒットさせ、そのクラスを注入可能な依存関係として持つロジックを抽出することも考えたので、テストスイート全体で次のことができます。
Example.external_service = DummyImplementation
そして、私ができる実際のテストのために:
Example.external_service = RealImplementation
しかし、ロジックは実際には3行しかないので、これはやり過ぎのようです。
提案はありますか?おそらく私が見ていない単純なものはありますか?