请求正文不同时的存根请求

时间:2018-04-14 13:05:29

标签: ruby-on-rails rspec-rails stubbing webmock rubocop-rspec

您好我正在使用ruby-2.5.0和Rails 5处理RoR项目。我正在使用stub_request来存储一个http请求。此http请求基本上是发送电子邮件的mailjet api请求。

所以,我不能只重复使用片段,rspec向我吐出,因为每次执行时身体都不同。

存根请求

stub_request(:post, "https://api.mailjet.com/v3/send").
           with(
             body: "{\"FromEmail\":\"abc@abc.ocm\",\"FromName\":\"abc\",\"To\":\"abc@abc.com\",\"Subject\":\"Forgot Password\",\"Text-part\":\"xV3SEtaoa1oyYYfYBt12pw\"}",
             headers: {
            'Accept'=>'application/json',
            'Accept-Encoding'=>'deflate',
            'Authorization'=>'Basic YmY0NzdhZmYyMmZlMGQwMzAxNzYzNDNkODUwZTY1MzE6YmRhNmZmYzQ0Y2ZmNGM3MmZkZGNkMjUwODA5YWJhZjM=',
            'Content-Length'=>'143',
            'Content-Type'=>'application/json',
            'Host'=>'api.mailjet.com',
            'User-Agent'=>'mailjet-api-v3-ruby/1.5.4'
             }).
           to_return(status: 200, body: "", headers: {})

此处文字部分对每个用户都有所不同。我尝试了 hash_including 方法,如下所示: -

stub_request(:post, "https://api.mailjet.com/v3/send").
           with(
             body: hash_including({"FromEmail": "abc@abc.com","FromName": "abc"}),
             headers: {
            'Accept'=>'application/json',
            'Accept-Encoding'=>'deflate',
            'Authorization'=>'Basic YmY0NzdhZmYyMmZlMGQwMzAxNzYzNDNkODUwZTY1MzE6YmRhNmZmYzQ0Y2ZmNGM3MmZkZGNkMjUwODA5YWJhZjM=',
            'Content-Length'=>'143',
            'Content-Type'=>'application/json',
            'Host'=>'api.mailjet.com',
            'User-Agent'=>'mailjet-api-v3-ruby/1.5.4'
             }).
           to_return(status: 200, body: "", headers: {})

但是当我运行测试时它会抛出一个错误: -

JSON::ParserError:
       765 : unexpected token at ''

请帮助我使用hash_including方法的正确语法。提前谢谢。

0 个答案:

没有答案