使用cucumber和Rspec开发一个带BDD的SOAP客户端

时间:2009-06-24 21:39:26

标签: ruby-on-rails xml soap rspec cucumber

作为一种学习经验,我正在开发一个小型Rails应用程序,它应该查询现有的SOAP API / Web服务(使用handsoap gem),并简单地将收集到的信息呈现给用户。

我喜欢使用rspec并且习惯了黄瓜来测试我的应用程序。让我难过的部分是如何测试与API的交互,即来回传递XML请求和响应的“非表示”部分。

非常感谢任何提示和指示!

谢谢!

3 个答案:

答案 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::HttpMocktests/account_test.rb

中的示例