1

所以,我正在尝试运行测试,但我收到一条错误消息。

Aruba::LaunchError:Command "seedly-calculator.rb" not found in PATH-variable

-seedly-calculator
 -bin
 -src
 -seedly-calculator.rb

我试图更改 rake 文件中的路径,但它不起作用。我的seedly-calculator.rb文件在根目录中。

require "rspec/core/rake_task"

namespace :spec do
  desc "Run the functional suite against the CLI"
  RSpec::Core::RakeTask.new(:functional, [] => [:set_path])

  task :set_path do
    project_bin_dir = File.join(File.dirname(File.expand_path(__FILE__)), '..', 'bin')
    ENV['PATH'] = project_bin_dir + ':'+ ENV['PATH']
  end
end

它显示如下错误:

  Failure/Error: let(:command) { run "seedly-calculator.rb" }

  Aruba::LaunchError:
  Command "seedly-calculator.rb" not found in PATH-variable "/Users/bilaltariq/Desktop/seedly-calculator/functional_spec/bin:/Users/bilaltariq/Desktop/seedly-calculator/functional_spec/exe:/Users/bilaltariq/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/bin:/Users/bilaltariq/Desktop/seedly-calculator/functional_spec/../bin:/Users/bilaltariq/.rbenv/versions/2.6.2/bin:/usr/local/Cellar/rbenv/1.1.1/libexec:/Users/bilaltariq/.rbenv/shims:/Users/bilaltariq/.asdf/shims:/Users/bilaltariq/.asdf/bin:/usr/local/bin:/Users/bilaltariq/.bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin".

我希望它能够命中文件,以便我可以编写一些测试。难道我做错了什么?

在此处输入图像描述

require 'spec_helper'

RSpec.describe 'Command Validation', type: :aruba do
let(:command) { run "seedly-calculator.rb" }

it "wrong/missing arguments" do
  command.write("lookup\n")
  stop_all_commands
  expect(command.output).to end_with("Missing bank_name argument.\n")
end

结尾

seedly-calculator.rb:
#!/usr/bin/env ruby

# Complete bin/setup so that after it is
# run, ruby seedly-calculator.rb can be used to launch
# it.

# frozen_string_literal: true

require_relative './src/runner'

if !ARGV.length.zero?
  input = ARGV
  Runner.new.send('process_input', input)
else
  puts "Arguments required!."
end
4

1 回答 1

0
更新

要使用 ruby​​ 脚本运行,run您需要确保您的 ruby​​ 脚本是可执行的并且包含 shebang,以便您的系统知道使用 ruby​​ 运行它。这是此入门示例中的示例

#!/usr/bin/env ruby

file = ARGV[0]

if file.nil? || file.empty?
  abort "aruba-test-cli [file]: Filename is missing"
elsif !File.exist? file
  abort "aruba-test-cli [file]: File does not exist"
end

puts File.read(file).chomp

因此,在您的情况下,您需要将其添加到seedly-calculator.rb文件的第一行

#!/usr/bin/env ruby

然后从命令行运行它以使其可执行。

chmod +x #!/usr/bin/env ruby

我做了一个简单的例子,从我上面提到的那个中分叉出来。 看到这个提交

Rspec 约定是它应该匹配您项目的相同文件结构。手动设置 PATH 不是一个好主意。

Rake 任务通常放在任务文件夹中,因此您应该在项目根目录中有一个任务文件夹

my_project/tasks/something.rake

然后你应该有一个匹配的规范文件夹

my_project/spec/tasks/something_spec.rb

然后你应该能够摆脱 task :set_path do end 阻塞并在没有它的情况下运行规范。

您还应该有一个 Gemfile 来加载您的 gem,运行bundle install然后调用您的测试

bundle exec rspec spec/tasks/sometask_spec.rb
于 2019-03-24T11:43:41.597 回答