Ruby on rails 如何测试(使用RSpec)HTTP请求是否在Rails中发送(作为单元测试的一部分)?

Ruby on rails 如何测试(使用RSpec)HTTP请求是否在Rails中发送(作为单元测试的一部分)?,ruby-on-rails,unit-testing,rspec,rspec-rails,Ruby On Rails,Unit Testing,Rspec,Rspec Rails,我在Gateway类中得到了这段代码,它向公司内部API发出请求。如何进行单元测试 class XGateway < BaseGateway self.target_url = ENV["X_URL"] def activate(serial_number:, comment: nil) expecting 204 do connection.put do |req| req.url "/api/v1/hw/#{serial_number}/a

我在Gateway类中得到了这段代码,它向公司内部API发出请求。如何进行单元测试

class XGateway < BaseGateway
  self.target_url = ENV["X_URL"]

  def activate(serial_number:, comment: nil)
    expecting 204 do
      connection.put do |req|
        req.url "/api/v1/hw/#{serial_number}/activate"
        req.params = { comment: comment }
      end
    end
  end

  def deactivate(serial_number:, comment: nil)
    expecting 204 do
      connection.put do |req|
        req.url "/api/v1/hw/#{serial_number}/deactivate"
        req.params = { comment: comment }
      end
    end
  end
end
连接是一个法拉第请求对象,expecting是一个方法,用于让方法知道有效响应的状态。两者都在XGateway继承的BaseGateway中定义

现在我需要在单元测试的范围内测试什么

据我所知,对于每种方法:

测试HTTP请求是否使用正确的参数发送 当预期满足时,测试正确的行为响应状态代码为204 当预期未实现时测试正确行为响应的状态代码不同于204 但是,如何测试http请求是否已发送

通常我用于测试请求和响应。有了它,您可以在代码中记录请求和响应。VCR的主要目的是加快您的测试套件的速度,并使其对第三方系统中的更改更加健壮

在您的情况下,您可以设置单元测试,将参数传递给activate和deactivate方法,并根据您期望的输入响应进行测试

您可以,尽管我不能建议您解析请求url所在部分的vcr磁带,并根据您的期望进行匹配

你可以用