2015-09-15 40 views
1

我有一个脚本,我想在使用RSpec的一些测试中运行,我想测试输入/输出。命令行程序的功能测试Ruby/RSpec

例如,

我有一个脚本“script.rb”我运行使用“红宝石script.rb”

脚本然后输出到STDOUT和需要使用STDIN的输入。我想用RSPec来测试它,并检查一切正常工作(功能测试)。我会如何去做这件事?只要在RSPec中执行'ruby script.rb',然后测试输出是我期望的结果,并且它需要STDIN的输入?

回答

0

由于您想将脚本测试为黑盒子(仅STDIN/STDOUT),因此您可以通过system()调用完成:只需确保清除脚本将要离开的所有副作用(例如,临时文件)。

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

这之后你可能会遇到你的命令是这样的:

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

ok了,有没有办法伪造标准输入得到调用脚本,所以我不必须手动有测试者输入的东西吗?类似于web请求中的水豚的fill_in方法 – noname