Webmock相当于curl命令

时间:2013-08-06 20:39:26

标签: ruby-on-rails curl rspec

我编写了一个控制器函数,它运行curl命令向第三方服务发送消息。我想测试此功能以确认我的消息已发送。但是,当我使用Webmock时,它不会阻止命令。如何验证消息是否在rspec测试中发送?

2 个答案:

答案 0 :(得分:1)

我最终使用了Typhoeus,这允许我在ruby中发送自定义的curl样式的网络请求。我也可以使用它来存根。 rspec测试内容如下:

  it 'correctly prepares a new Typhoeus request and runs it' do
    Typhoeus::Request.should_receive(:new).with(<request>).and_call_original
    Typhoeus::Request.any_instance.should_receive(:run).and_call_original
    object.method
  end

答案 1 :(得分:0)

您可以使用ruby进行HTTP调用,也可以将curl命令包装在可以设置期望的模块中:

module Curl
  def self.perform(url)
    `curl -s "#{url}"`
  end
end

Curl.stub(perform: 'http response')
perform_some_action
expect(Curl).to have_received(:perform).with(the_url)