3

我正在尝试测试一个 ruby​​ 命令行脚本,但在 RSpec 3 中使用无 Cucumber Aruba 运行测试时遇到了麻烦。

一些奇怪的错误,一些明显的错误。

例如奇怪:

 1) test does something
   Failure/Error: run_simple("cli_test.rb -h", true)
     ArgumentError:
   wrong number of arguments (2 for 1)
 # .../.gem/ruby/2.2.0/gems/aruba-0.6.2/lib/aruba/api.rb:632:in `assert_exit_status'
 # .../.gem/ruby/2.2.0/gems/aruba-0.6.2/lib/aruba/api.rb:750:in `run_simple'
 # ./spec/cli_test_spec.rb:17:in `block (2 levels) in <top (required)>'

查看代码,我什至看不到是什么触发了这个。尝试使用 Pry 或 Pry-byebug 来检查错误的 2 args 也不起作用(一大堆其他错误)。

然后,例如显而易见:

 1) test does something
   Failure/Error: check_file_presence(["bin/cli_test.rb"], true)
     only the `receive` or `receive_messages` matchers are supported with 
     `expect(...).to`, but you have provided: 
     #<RSpec::Matchers::BuiltIn::BePredicate:0x007fb36c88d6b0>
 # ... error lines ...

& 在这里,错误显然是正确的,Aruba 使用的是 Rspec 2 语法。

所以我加了

config.expect_with :rspec do |c|
  c.syntax = [:should, :expect]
end

到我的 rspec 配置,但仍然无法正常工作。

有任何想法吗?提示?这个工作在任何地方的例子?

提前致谢。

4

1 回答 1

0

使用 RSpec 2 的示例存在一些冲突,特别是如果您需要aruba\api并弄乱其中许多包含/扩展行。

这是让 Aruba 正常工作的最小示例。您可能想使用 PATH 环境和类似的东西微调您的配置

require 'aruba/rspec'

describe "Ruba example", :type => :aruba do 
  it 'shows root content' do
    run 'ls /'
    expect(all_stdout).to include('tmp')
    expect(all_stdout).to include('var')
    expect(all_stdout).to include('usr')   
  end 
end
于 2015-07-31T17:28:05.347 回答