Включить spec_helper в Rakefile - PullRequest
       31

Включить spec_helper в Rakefile

0 голосов
/ 01 октября 2018

В Rspec 3 предпочтительным способом добавления файла spec/spec_helper.rb является добавление флага к файлу .rpsec:

--require spec_helper

, что устраняет необходимость добавлять ссылку вверхукаждый _spec файлов:

# include 'spec/spec_heler'  <-- removed

describe FooController do
end

Однако, когда я пытаюсь запустить тест Rspec через Rake, я получаю сообщение об ошибке:

$ rake test
Traceback (most recent call last):
/Users/<user>/Projects/sinatra/mod/spec/app/controllers/foo_controller_spec.rb:1:in `<top (required)>': uninitialized constant FooController (NameError)
rake aborted!
Command failed with status (1)

Tasks: TOP => test
(See full trace by running task with --trace)

Что говорит о том, что .rpsec и spec_helper файлы не читаются.

Содержимое Rakefile:

require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = "spec/**/*_spec.rb"
end

Содержимое spec/spec_helper.rb:

require 'rack/test'
require 'rspec'

require File.expand_path '../../app.rb', __FILE__

RSpec.configure do |config|

  # rack
  config.include Rack::Test::Methods

  ...
end

Как сделатьЯ исправляю эту проблему?

1 Ответ

0 голосов
/ 03 октября 2018

Мне нужно было изменить Rakefile:

require 'rspec/core/rake_task'

task :default => :spec

RSpec::Core::RakeTask.new(:spec) do |t|
  t.pattern = "spec/**/*_spec.rb"
end

Мне также нужно было изменить файл spec/spec_helper.rb:

# added
require 'rubygems'
require 'bundler/setup'

# existing
require 'rack/test'
require 'rspec'

require File.expand_path '../../app.rb', __FILE__

RSpec.configure do |config|

  # rack
  config.include Rack::Test::Methods

  ...

end

Когда тесты запускаются с rspec:

$ rspec
...
Finished in 0.07952 seconds (files took 0.63445 seconds to load)
15 examples, 0 failures, 1 pending

Когда тесты запускаются с rake:

$ rake
/Users/<user>/.rbenv/versions/2.3.3/bin/ruby -I/Users/<user>/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-support-3.8.0/lib:/Users/<user>/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-core-3.8.0/lib /Users/<user>/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-core-3.8.0/exe/rspec --pattern spec/\*\*/\*_spec.rb
...
Finished in 0.08885 seconds (files took 0.70133 seconds to load)
15 examples, 0 failures, 1 pending

Однако не уверен, почему он добавляет $LOAD_PATH.

...