作为一种学习经验,我正在开发一个小型Rails应用程序,它应该查询现有的SOAP API / Web服务(使用handsoap gem),并简单地将收集到的信息呈现给用户。
我喜欢使用rspec并且习惯了黄瓜来测试我的应用程序。让我难过的部分是如何测试与API的交互,即来回传递XML请求和响应的“非表示”部分。
非常感谢任何提示和指示!
谢谢!
答案 0 :(得分:1)
看一下fakeweb gem。
它有助于保持网络互操作性, 即你可以创建测试答案:
FakeWeb.register_uri(:get, "http://example.com/test1", :body => "Hello World!")
并禁用发送http请求的功能:
FakeWeb.allow_net_connect = false
Net::HTTP.get(URI.parse("http://example.com/"))
=> raises FakeWeb::NetConnectNotAllowedError
答案 1 :(得分:0)
我假设您正在讨论功能/集成样式测试而不是单元测试,在这种情况下,我可能会考虑模拟Web服务的接口并在较低级别上对代码进行单元测试。
但要回归黄瓜。正如AslakHellesøy在Stack overflow q 810410指出的那样,没有任何东西可以阻止你这样做。当您编写了实际要测试的行为的场景时,您只需在步骤定义中实例化正确的对象并调用适当的方法。如果这是您需要的,可能还会将它与返回值或内容上的一些断言相结合。有关如何使用黄瓜加载rspec的should()
,请参阅Rspec expectations。
答案 2 :(得分:0)
使用最新版本的Handsoap,您可以使用模拟http驱动程序来模拟http级别。请参阅:Http::HttpMock
和tests/account_test.rb