首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对XML请求的Rails WebMock

针对XML请求的Rails WebMock
EN

Stack Overflow用户
提问于 2016-01-29 20:36:38
回答 1查看 605关注 0票数 2

我很难弄清楚如何使用webmock将stub_request与XML请求相匹配。

请求:

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <env:Header>
        <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xmlns:n1="urn:ebay:apis:eBLBaseComponents" env:mustUnderstand="0">
          <n1:Credentials>
            <n1:Username>XYZ</n1:Username>
            <n1:Password>ABC</n1:Password><n1:Subject/>
            <n1:Signature>HUGE-STRING</n1:Signature>
          </n1:Credentials>
        </RequesterCredentials>
      </env:Header>
      <env:Body>
        <ManageRecurringPaymentsProfileStatusReq xmlns="urn:ebay:api:PayPalAPI">
          <ManageRecurringPaymentsProfileStatusRequest xmlns:n2="urn:ebay:apis:eBLBaseComponents">
            <n2:Version>124</n2:Version>
            <n2:ManageRecurringPaymentsProfileStatusRequestDetails>
              <ProfileID>sdaddsadsd</ProfileID>
              <n2:Action>Cancel</n2:Action>
            </n2:ManageRecurringPaymentsProfileStatusRequestDetails>
          </ManageRecurringPaymentsProfileStatusRequest>
        </ManageRecurringPaymentsProfileStatusReq>
      </env:Body>
    </env:Envelope>

我尝试过的存根:

代码语言:javascript
复制
stub_request(:any, /.*.sandbox.paypal.com\/2.0\//).
   with(:body => WebMock::Matchers::HashIncludingMatcher.new({'n2:Action'=>'Cancel'}),
    :headers => {'User-Agent'=>'Ruby'}).
   to_return(:status => 200, ...

代码语言:javascript
复制
stub_request(:any, /.*.sandbox.paypal.com\/2.0\//).
   with(query:
    hash_including({ProfileID: 'sdaddsadsd'}),
    :headers => {'User-Agent'=>'Ruby'}).
   to_return(:status => 200, ...

(等)

都失败了。

有没有人?

EN

回答 1

Stack Overflow用户

发布于 2018-10-26 04:11:30

如果您可以将要存根的XML保存到单独的XML文件(比如request.xml)中,这将非常容易:

代码语言:javascript
复制
stub_request(:any, 'https://sandbox.paypal.com')
  .with(body: File.read('request.xml').strip)

How to use webmock regex matcher?可能会帮助你进行网址匹配。

P.S. strip将删除结束换行符

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35084742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档