XMLRPC を介して次の一連の呼び出しを行うクライアントを指定しようとしています。
post (https) myservice.auth.login (with params login, password)
post (http) myservice.items.list (with sessionid from login)
私はこれらをモックしようとしているので、本番の XMLRPC サービスにアクセスする必要はありません。したがって、次のようにしました。
require 'spec_helper'
describe ItemList do
it "hydrates the model" do
stub_request(:post, 'secure-api.myservice.com/webservices/xmlrpc/').
with(:body =~ /myservice.auth.login/m).
to_return(:body => AUTH_XML, :status => 200).
stub_request(:post, 'api.myservice.com/webservices/xmlrpc/').
with(:body =~ /myservice.items.list/m).
to_return(:body => ITEMLIST_XML, :status => 200)
expect{ItemList.hydrate_item_list}.to change(ItemList, :count).from(0).to(3)
end
end
ITEMLIST_XML=<<EOD
<myserviceResponse sessionid="000123401200002312" membername="abc">
<itemList>
<item itemid="123" name="Faves" public="false" membername="abc" itemcount="30" views="20">
<description>Stuff I like</description>
<keywords>walks, rain, pina colada</keywords>
</item>
<item itemid="124" name="Yuck!" public="false" membername="abc" itemcount="35" views="5">
<description>Stuff I don't like</description>
<keywords>spinach, brussle sprouts, liver</keywords>
</item>
<item itemid="125" name="Project" public="true" membername="def" itemcount="5" views="2">
<description>Brochure images</description>
<keywords></keywords>
</item>
</itemList>
</myserviceResponse>
EOD
AUTH_XML=<<EOD
<myserviceResponse sessionID="10301">
<memberName>redrover</memberName>
</myserviceResponse>
EOD
auth
基本的に、この仕様に何が渡されるかは気にしません。モデルを実際に水分補給する前にジャンプする必要があるため、とにかく承認したいと思います。
これらのスタブは投稿を傍受していないようで、どうすればデバッグできるのかわかりません。
ヒントをいただければ幸いです。
ありがとう