在示例中,无法使用Aruba和Rspec进行测试,但无法通过run运行(例如,it块)

时间:2018-07-30 15:46:33

标签: ruby rspec console-application aruba

我需要使用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。将不胜感激。谢谢。

1 个答案:

答案 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