如何使用RSpec在Ruby中编写命令行应用程序?

pan*_*rey 2 ruby rspec

知道如何用rspec在ruby中编写命令行应用程序吗?

如何测试驱动命令应用程序.

d11*_*wtq 6

如果要运行命令,可以在命令周围使用反引号并返回一个String:

`ruby /path/to/my_command.rb arg1 arg2`.should == "something"
Run Code Online (Sandbox Code Playgroud)

但我个人会将这种测试方式限制在非常有限的测试子集中.这些是集成测试,不仅仅是单元测试,这并不意味着你不应该写它们,但你应该首先测试稍低的级别.

但是,如果能够在较低级别测试命令,则需要以易于从中提取单个单元的方式对其进行构造.如果你的脚本是一个很大的过程脚本,那么你可能做不了多少,但是如果它由表示它将运行的各种命令的类组成,你可以测试这些类而不在shell中执行命令.