私はモックを書くのが好きではありませんでした。しばらく前に、ここの誰かがFakeWebの使用を勧めました。私はすぐにFakeWebに完全に夢中になりました。ただし、FakeWebを使用することにはマイナス面があるのではないかと思います。モックはまだはるかに一般的であるように思われるので、代わりにFakeWebを使用することで何が間違っているのか疑問に思います。Fakewebでカバーできない特定の種類のエラーがありますか、それともTDDまたはBDDプロセスに関するものですか?
2 に答える
HTTPモックライブラリのラッパーであるVCRに満足するでしょう。元のHTTPリクエストをキャッシュするため、テストは高速でオフラインで機能しますが、テストがリモートAPIに対して機能するかどうかを確認するために、元のリクエストを再度実行するように変更することもできます。
WebMockhttp://github.com/bblimke/webmockをご覧ください。
httpリクエストをモックすることの欠点は、リモートAPIの変更に対する保護がないことです。リモートHTTPサービスが変更され、コードに互換性がなくなった場合、テストではそのことはわかりません。httpクライアントメソッドを自分でモックする場合も、同じ問題が発生します。コードが実際のhttpサービスと通信できることを確認する統合テストスイートがあると便利です。
FakeWebやWebMockのようなライブラリの利点は、特定のhttpクライアントライブラリの実装の詳細を気にすることなく、動作の実装に集中できることです。ライブラリをたとえばNet::HTTPからRestClientに変更した場合でも、動作は保持されるため、テストに合格する必要があります。httpクライアントを自分でモックする場合は、動作が変わらなくても、実装を変更するときにテストを変更する必要があります。FakeWebまたはWebmockを使用すると、TDDまたはBDD(最初にテスト)にも役立ちます。特定のhttpクライアントの実装の詳細を気にする前に、仕様またはテストを使用してhttpの動作を指定できます。