#ruby #rspec #aruba
#ruby #rspec #aruba
Вопрос:
Итак, я пытаюсь запустить тест, но я получаю сообщение об ошибке.
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("lookupn")
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
Комментарии:
1. Можете ли вы опубликовать то, что находится в
seedly-calculator.rb
?2. добавлен мой seedly-calculator.rb
Ответ №1:
Чтобы запустить скрипт 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 обычно помещаются в папку tasks, поэтому у вас должна быть папка tasks в корне проекта
my_project/tasks/something.rake
Тогда у вас должна быть папка спецификации, соответствующая
my_project/spec/tasks/something_spec.rb
Тогда вы должны быть в состоянии избавиться от task :set_path do end
блока и просто запустить спецификацию без этого.
У вас также должен быть Gemfile для загрузки ваших драгоценных камней, запуска bundle install
, а затем вызова вашего теста с помощью
bundle exec rspec spec/tasks/sometask_spec.rb
Комментарии:
1.так мне все еще нужны эти
project_bin_dir =File.join(File.dirname(File.expand_path(__FILE__)), 'seedly-calculator.rb')
ENV['PATH'] = project_bin_dir ':' ENV['PATH']
2. @NickBb нет, ты, наверное, можешь удалить весь этот мусор
3. @locostenycoder поэтому я удалил ее оттуда и добавил bundle exec rspec в моем исполнении, но я все еще получаю ту же ошибку aruba
Aruba::LaunchError: Command "seedly-calculator.rb" not found in PATH-variable
4. @locostenycoder очень смущен. У меня все функциональные возможности работают. и rspec работает, когда мой файл находится внутри папки bin. но я хочу, чтобы она была снаружи, и каждый раз, когда я добавляю ее снаружи, она показывает мне ошибку, которая не может найти такой файл.
5. т.е. там в любом случае я могу отправить вам личное сообщение!