2017-05-04 4 views
0

リモートデータベースにある外部データに依存する外部API(Salesforce)とやりとりするレールアプリがあります。私はこのコードをラップするラッパーを書いて、ユーザーが対応するSQLクエリを書くのではなくget_by_id(id)を呼び出すことができるようにしました。さまざまな統合によるレールテスト

私はこのコードをテストしたいと思いますが、どうすればいいか分かりません。実際のメソッドを呼び出して、Salesforceバックエンドデータベースのテストを行うべきですか?または、私はメソッド呼び出しの結果を嘲笑すべきですか?私はテストするべきものによって永遠に混乱しています...

答えて

1

あなたはSalesforceのやり取りのスイートのように書くべきです。

テストの基本原則は、外部要因のためにテストが失敗しないことです。しかし、あなたのアプリはSalesForceのエラーから回復できるはずです。

Rails 4 Test Prescriptions

から残念ながら、サードパーティのWebサービスと対話することは、私たちのテストに複雑の をたくさん紹介しています。 Webサービスへの接続は で、遅くてもデータベース接続よりも遅くなりました。すでに試してみましたが、 は避けてください。さらに、Webサービスへの接続にはインターネットが必要です 接続...一部の外部サービスは公開されています。私たちはテストを実行するたびにTwitterに更新情報を投稿したくないのですが、PayPalにクレジットカードによる支払いを掲載することはできません。

また、本はいくつかのガイドライン、テスト中にHTTPリクエストをインターセプトし、 は缶詰のレスポンスオブジェクトを返す

偽のサーバーを持っています。私たちはVCR gemを使用しています... * アダプタ。クライアントとクライアントの間でアクセスを仲介するために サーバの間に位置するオブジェクトです。

クライアントから実サーバまでのスモークテスト...インタラクション全体の完全なエンドツーエンドテスト。 は、これまでに挙げたすべての理由によりこれを頻繁にやりたいとは限りませんが、サーバAPIの変更を防ぐためには、 が便利です。

統合テストは、クライアントから偽のサーバーに移行します。 これは、アプリケーションのエンドツーエンド機能全体をテストしますが、 は、サーバーからのスタブ応答を使用します。

クライアントでテストを開始し、 アダプタで終了します。アダプターの応答はスタブされているため、アダプター は偽サーバー呼び出しをしていません。これにより、 クライアントをサーバーAPIから完全に分離して単体テストできます。

アダプタユニットテストは、アダプタで起動し、 偽のサーバで終了します。これらのテストは、チェーンの最後のピースであり、私たち がところで、任意のクライアントから別のアダプタまたは 実際のサーバー

の動作を検証することができ、私は本を持っている必要があります

だと思います
関連する問題