ソフトウェアテストでstubを使うコストを考える(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Cost of stubs in tests 原文公開日: 2017/12/09 著者: Dmitriy Nesteryuk ソフトウェアテストでstubを使うコストを考える(翻訳) 本記事では、テストで何かと見かけるstubについて考察します。stubやmockは便利だと思う人もいれば、そう思わない人もいたりします(stubとmockは別物ですが、両者の違いは本記事の範疇ではないため、まとめてstubと呼ぶことにします: どうかご了承ください)。この話題は私が働いているチームではすっかり落ち着いていたのですが、最近になってまた話題にのぼったので、この際私の考えをざっくりここにまとめることにしました。誤りや見落としがありましたらぜひお知らせください。 かつての私は、依存をstubするのが大好きな開発者でした。テストが簡単に書けますし、読みやすく、しかもシンプルです。 class Customer def order_fee if inherit_fee? company.fee else fee end end end class Order def total subtotal + customer.order_fee end end 上のコードから、feeは、それに関連する特定の1人のcustomerまたは1つのcompanyについて定義できることがわかります。依存をstubする(実際はメソッドの呼び出しですが)テストは次のようになります。 describe Order do let(:customer) { Customer.new } let(:order) { Order.new(subtotal: 100, customer: customer) } describe ‘#total’ … Continue reading ソフトウェアテストでstubを使うコストを考える(翻訳)