【问题标题】:Aruba: Command "seedly-calculator" not found in PATH-variableAruba:在 PATH 变量中找不到命令“seedly-calculator”
【发布时间】:2019-03-24 10:11:45
【问题描述】:

所以,我正在尝试运行测试,但出现错误提示。

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

【问题讨论】:

  • 你能把seedly-calculator.rb里的东西发一下吗?
  • 添加了我的种子计算器.rb

标签: ruby rspec aruba


【解决方案1】:
更新

要使用run 运行 ruby​​ 脚本,您需要确保您的 ruby​​ 脚本是可执行的并且包含 shebang,以便您的系统知道使用 ruby​​ 运行它。这是来自this starter example的示例

#!/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

我做了一个简单的例子,从我上面提到的那个中分叉出来。 See this commit

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

【讨论】:

  • 我还需要这些吗project_bin_dir =File.join(File.dirname(File.expand_path(__FILE__)), 'seedly-calculator.rb')ENV['PATH'] = project_bin_dir + ':'+ ENV['PATH']
  • @NickBb 不,你可能可以删除所有垃圾
  • @locostenycoder 所以我从那里删除了它并在我的执行中添加了 bundle exec rspec 但我仍然收到相同的 aruba 错误Aruba::LaunchError: Command "seedly-calculator.rb" not found in PATH-variable
  • @locostenycoder 非常困惑。我拥有所有功能。当我的文件位于 bin 文件夹中时,rspec 正在工作。但我想把它放在外面,每次我把它添加到外面时,它都会显示找不到这样的文件的错误。
  • 反正我可以私信你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2016-11-20
  • 2018-01-07
  • 2019-11-29
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
相关资源
最近更新 更多