加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用RSpec测试纯Ruby bin / my_app.rb应用程序?

发布时间:2020-12-17 02:30:08 所属栏目:百科 来源:网络整理
导读:我有一个用纯 Ruby编写的命令行(NON-RAILS)应用程序,我通过Cucumber和RSpec驱逐出去.它遵循lib,bin,spec和feature目录的典型应用程序层次结构. 到目前为止,我已经遵循了编写失败的Cucumber特性/场景的传统过程,下载到RSpec以驱逐支持的lib文件,然后让场景通
我有一个用纯 Ruby编写的命令行(NON-RAILS)应用程序,我通过Cucumber和RSpec驱逐出去.它遵循lib,bin,spec和feature目录的典型应用程序层次结构.

到目前为止,我已经遵循了编写失败的Cucumber特性/场景的传统过程,下载到RSpec以驱逐支持的lib文件,然后让场景通过.

不幸的是,当驱逐出“bin / my_application.rb”中的主应用程序入口点时,这似乎并不那么直截了当.对我来说主要的问题是我没有在RSpec中描述一个类,它是一个顺序的Ruby脚本,用于管理应用程序的类和通过命令行参数和选项进行初始化.

“bin / my_application.rb”只是一个小的shell执行包装器,用于解析命令行选项并将它们作为初始化程序选项传递给我的主应用程序类.我还想测试bin脚本的行为(例如MyApp.should_receive(option_a).with(parameter)).

有什么建议/意见/建议吗?这是驱逐命令行Ruby脚本行为的正常测试策略吗?

提前致谢.

解决方法

我不确定我完全理解你在问什么,但我会说,如果你想使用RSpec测试你的参数传递它应该很容易做到.假设你有你的包装脚本:

# my_application.rb
command = Command.new
command.foo = true if ARGV[0]
command.bar = true if ARGV[1]
command.baz = false if ARGV[2]

command.make_dollars(1000000)

只需将它混合起来,使其成为适合测试的类.

# command_runner.rb
class CommandRunner
  def run(args,command = Command.new)
    command.foo = true if args[0]
    command.bar = true if args[1]
    command.baz = false if args[2]

    command.make_dollars(1000000)
  end
end

# my_application.rb
CommandRunner.new.run(ARGV)

现在你唯一没有测试过的是run命令的默认参数和文件my_application.rb中的一行

希望有所帮助.布兰登

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读