1

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

4

1 回答 1

0

正如错误所暗示的,您不能runit块内调用。由于分支众多,Aruba 的文档在此处可能会有些混乱,但该run方法仍可在still分支中使用,文档可在此处找到。

根据文档,我们可以使用以下方法在块外定义它,而不是commandit块内定义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
于 2018-08-01T10:36:27.090 回答