ruby - 如何测试与 Web 服务通信的 Ruby 命令行程序?

标签 ruby cucumber aruba webmock

我正在构建一个与网络服务通信的 Ruby 命令行程序。我正在使用 Cucumber 和 Aruba 来测试程序。问题是我需要控制从网络服务返回的数据;该程序获取用户评论流,因此随着新评论的添加,这可能会经常更改。我尝试使用 WebMock 模拟 Web 服务,但这没有用,因为 Aruba 将命令行程序分离到一个不受 WebMock 影响的单独进程(因此它仍然与 真实网络服务)。

如何使用 Cucumber 测试该程序的输出?


编辑:Web 服务将流作为 JSON 数据返回。我已经捕获了用于测试的数据快照;简而言之,我正在寻找一种方法来替换我的静态数据来代替对 Web 服务的实际调用。

或者,如果有完全不同的方法来实现这个目标,我会洗耳恭听。

最佳答案

Aruba 提供了一种模式,让您可以“在进程中”运行事物,这将允许您使用 WebMock 或 VCR。这是一篇解释如何做到这一点的博客文章:

http://georgemcintosh.com/vcr-and-aruba/

或者,您可以考虑编写一个新的二进制文件,首先加载 VCR 或 WebMock,然后加载并执行您的主二进制文件,并让您的测试运行该二进制文件。

关于ruby - 如何测试与 Web 服务通信的 Ruby 命令行程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13713162/

相关文章:

ruby - Cucumber + Capybara - Firefox/Chrome 中的 HTTP 请求路径为空

ruby - cucumber + 阿鲁巴岛 + Windows : Tests don't see last line of stdout?

html - 链接到 Rails 中的根路径

java - 线程 "main"java.lang.NoClassDefFoundError : gherkin/lexer/Encoding 中出现异常

ruby - 关于如何使用正则表达式验证名字和姓氏的建议

cucumber - 如何从 Excel 电子表格读取输入数据并在 Karate 框架中传递 JSON 负载?

mysql - Aruba-MySQL : can't create/change table to engine=INNODB

ruby - RSpec:模拟、 stub 和验证

mysql - 从给定编号所属的表中选择所有记录