残念ながら、私は Soap API と対話する必要があります。それだけでは不十分な場合、API ではパラメーターの順序付けがオンになっています。つまり、XML であるという事実に関係なく、正しい要素順序で構造化する必要があります。
私は Savon を使用しているので、順序付きハッシュを作成しています。ただし、いくつかのリファクタリングの後、実際の呼び出しは機能しなくなりましたが、すべてのテストは引き続き成功しました。典型的なテストは次のようになります。
it 'should receive correctly ordered hash' do
example_id = 12345789
our_api = Example::ApiGateway.new()
params = {:message=>{'ApiKey' => api_key, 'ExampleId' => example_id}}
Savon::Client.any_instance.should_receive(:call).with(:get_user_details, params).and_return(mocked_response())
our_api.get_user(example_id: example_id)
end
ハッシュ比較はキーの順序をまったく気にしないため、実際に受け取ったハッシュ順序に関係なく、このテストはパスします。メソッドが受け取るパラメーターを取得してcall
から、各ハッシュの順序付けられたキーを比較したいのですが、これを行う方法がわかりません。
Savon 呼び出しがメッセージ ハッシュを正しい順序で受信するようにするにはどうすればよいですか?