我需要使用rspec脚本测试控制台应用程序并检查打印输出。示例:
RSpec.describe 'Test Suite', type: :aruba do
it "has aruba set up" do
command = run("echo 'hello world'")
stop_all_commands
expect(command.output).to eq("hello world\n")
end
它失败并显示:
Failure/Error: command = run("echo 'hello world'")
`run` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
Aruba版本0.14.6,Rspec 3.7.0。将不胜感激。谢谢。
答案 0 :(得分:0)
正如错误所暗示的,您不能在run
块内调用it
。 Aruba的文档由于分支的不同而在这里可能会造成一些混乱,但是run
分支中仍然可以使用still
方法,找到的文档为here。
遵循文档说明,而不是在command
块内定义it
,我们可以使用let
在块外定义它:
RSpec.describe 'Test Suite', type: :aruba do
context "aruba test" do
let(:command) { run("echo 'hello world'") }
it "has aruba set up" do
stop_all_commands
expect(command.output).to eq("hello world\n")
end
end
end