使用ruby执行半自动测试

时间:2011-08-27 15:38:16

标签: ruby testing rspec

我正在编写一个与短信服务交互的开源gem。我想测试交互,但它需要帐户信息和电话号码才能运行。它还需要反馈来确定是否正确发送了短信。这导致两个问题:

  1. 我无法将帐户信息放在测试文件中,因为gem是开源的,任何人都可以访问它。

  2. 我需要运行测试的人在脚本运行时向脚本提供信息(例如,检查手机是否收到消息)。

  3. 有哪些技术或库可以帮助解决这个问题?我目前正在使用rspec并使其提示参数(使用gets),但目前它非常笨拙。我不能成为第一个使用ruby来解决这个问题的人,我觉得我错过了一个宝石或者解决这个问题的东西。

3 个答案:

答案 0 :(得分:3)

使用模拟

具体来说,您的测试测试是什么?给定的登录名/密码有效吗?可能不是。您很可能希望确保您的代码正确地对API做出反应。因此,我建议嘲笑。保存API调用的输出并使用模拟服务返回这些响应。然后测试。作为一种快乐的副作用,你的测试会更快,更脆弱。

有关使用RSpec进行模拟的更多信息,请访问: http://rspec.info/documentation/mocks/

答案 1 :(得分:2)

Re 1)为什么不在YAML文件中保存配置选项并在测试开始时加载它们?

Re 2)是否有任何网络服务?例如。您可以向API发送消息并查询API以查看其是否有效。我知道这可能是不可靠的,但对于用户的电话公司网络也是如此。

答案 2 :(得分:1)

+1马克·托马斯对嘲笑的回答。另外两个用于Ruby的替代模拟对象库:FlexMockMocha