【问题标题】:Feature test for command line program Ruby / RSpec命令行程序Ruby / RSpec的功能测试
【发布时间】:2015-09-15 16:54:32
【问题描述】:

我有一个脚本,我想在一些使用 RSpec 的测试中运行,我想测试输入/输出。

例如,

我有一个使用“ruby script.rb”运行的脚本“script.rb”

脚本然后输出到 STDOUT 并使用 STDIN 获取输入。我想使用 RSPec 对此进行测试并检查一切是否正常(功能测试)。我该怎么做呢?只需在 RSPec 中执行“ruby script.rb”,然后测试输出是否符合我的预期以及它是否从 STDIN 获取输入?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 rspec


    【解决方案1】:

    由于您想将脚本测试为黑盒(仅 STDIN/STDOUT),您可以通过system() 调用完美地做到这一点:只需确保清除脚本留下的所有副作用(例如,临时文件)。

    编辑:只需创建一些包含所需内容的文件,例如stdin.txt

    之后你可以这样运行你的命令:

    system('cat stdin.txt | ruby myscript.rb')
    

    【讨论】:

    • 好的,有没有办法伪造标准输入来获取对脚本的调用,这样我就不必手动让测试人员输入一些东西?类似于 capybara 中用于 web 请求的 fill_in 方法
    • askubuntu.com/questions/338857/…system("printf 'y\ny\ny\n' | ./script")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2018-10-27
    • 1970-01-01
    相关资源
    最近更新 更多