我在Gateway类中有这个代码,它向公司内部API发出请求。我如何对它进行单元测试?
1
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
是法拉第请求对象,connection
是让方法知道有效响应所需状态的方法。两者都在XGateway继承的BaseGateway中定义。
现在我需要在这里测试什么(在单元测试的范围内?)
据我了解,对于每种方法:
但是,如何测试已发送http请求?
答案 0 :(得分:1)
通常我使用VCR来测试请求和响应。有了这个,您可以记录代码中的请求和响应。 VCR的主要目的是加速您的测试套件,使其更加强大,以防止第三方系统的变化。
在您的情况下,您可以设置单元测试,将params传递给activate
和deactivate
方法,并针对您期望从输入中得到的响应进行测试。
您可以(虽然我不建议这样做)解析请求网址所在部分的录像带,并将其与您的期望相匹配。