Railsで多くの外部APIをテストする

私は外部APIに多くの依存関係を持つRailsアプリケーションを開発しています。例えばDeliciousです。
すべてのAPIは2つのワークフローを共有します。

  • 最初の呼び出しでは、時間の始めからすべてのデータを読み込みます。
  • 後続のすべての呼び出しは、最後の実行時間でフィルタされたデータをロードします(サポートされている場合)。

実際にそれらをテストするには、APIごとにテストアカウントを作成するか、少なくともプライベートアカウントを使用する必要があります。一度呼び出されるため、
VCR
であっても。そして私の最大の問題は、上記の2つの異なるワークフローをエミュレートするために、 Date
Time Timecop
は本当に簡単ですが、お尻の痛みのように感じます。

もう1つのアプローチは、API呼び出しとそれに対応する応答を完全に偽造することですが、これは実際のテストがないことを意味し、さらにAPIの変更や問題を認識することはありません。

助言がありますか?多分両方の方法の良い組み合わせ?

ベストアンサー

両方を行います。

定期的な実行頻度の高いテストスイートのすべてを嘲笑/スタブすることから始めます。すべてのきめ細かいモデル/コントローラのテストでこれを行います。

次に、実際の(テスト)サーバーにヒットする通常のワークフローシナリオをカバーするエンドツーエンドのテスト(統合テストなど)を追加します。

代わりに、Test :: Unitの代わりにキュウリ、または通常のテストスイートとは異なる限り、セレン/
Watirなどのエンドツーエンドテスト用に別のテストスイートを使用してください

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です