学習経験として、(handsoap gem を使用して) 既存の SOAP API/Web サービスにクエリを実行し、そこで収集された情報をユーザーに表示する小さな Rails アプリケーションを開発しています。
私は rspec を使用するのが好きで、アプリケーションをテストするためにキュウリに慣れてきました。私が困惑した部分は、API との対話をテストする方法です。つまり、XML 要求と応答をやり取りする際の「非表示」部分です。
ヒントや指針は大歓迎です!
ありがとう!
学習経験として、(handsoap gem を使用して) 既存の SOAP API/Web サービスにクエリを実行し、そこで収集された情報をユーザーに表示する小さな Rails アプリケーションを開発しています。
私は rspec を使用するのが好きで、アプリケーションをテストするためにキュウリに慣れてきました。私が困惑した部分は、API との対話をテストする方法です。つまり、XML 要求と応答をやり取りする際の「非表示」部分です。
ヒントや指針は大歓迎です!
ありがとう!
fakewebgemを見てください。
これは、ネットワークの相互運用性をスタブ化するのに役立ちます。つまり、テスト応答を作成できます。
FakeWeb.register_uri(:get, "http://example.com/test1", :body => "Hello World!")
httpリクエストを送信する機能を無効にします。
FakeWeb.allow_net_connect = false
Net::HTTP.get(URI.parse("http://example.com/"))
=> raises FakeWeb::NetConnectNotAllowedError
最新バージョンの Handsoap では、モック http ドライバーを使用して、http レベルでモックアウトできます。参照:Http::HttpMock
および の例tests/account_test.rb
単体テストではなく、機能/統合スタイルのテストについて話していると思います。その場合、おそらく Web サービスのインターフェイスをモックし、コードを下位レベルで単体テストすることを検討します。
しかしキュウリに戻る。Aslak Hellesøy がStack Overflow q 810410で指摘しているように、これを行うことを妨げるものは何もありません。実際にテストする動作のシナリオを作成したら、ステップ定義で適切なオブジェクトをインスタンス化し、適切なメソッドを呼び出すだけです。必要に応じて、戻り値またはコンテンツに関するいくつかのアサートと組み合わせることもできます。cucumber で rspecをロードする方法については、Rspec の期待を参照してくださいshould()
。