我在 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
这connection
是一个法拉第请求对象,expecting
是一种让方法知道它期望有效响应的状态的方法。两者都在 XGateway 继承的 BaseGateway 中定义。
现在我需要在这里测试什么(在单元测试的范围内?)
据我了解,对于每种方法:
但是,如何测试 http 请求是否已发送?
通常我使用VCR来测试请求和响应。有了这个,您可以记录在您的代码中所做的请求和响应。VCR 的主要目的是加快您的测试套件的速度,并使其更强大以抵御第三方系统的变化。
在您的情况下,您可以设置单元测试,在其中将参数传递给activate
和deactivate
方法,并针对您期望从输入中获得的响应进行测试。
您可以(虽然我不推荐这样做)解析请求 url 所在部分的 vcr 盒式磁带,并将其与您的期望相匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句