rspec/guard يقوم بتشغيل minitest والحصول على خيار غير صالح:-F
-
21-12-2019 - |
سؤال
أنا أقوم بتشغيل Rails 4.1 وعندما أقوم بتشغيل rspec داخل Guard، فإنه يعطيني الخطأ التالي في النهاية:
invalid option: -f
minitest options:
-h, --help Display this help.
-s, --seed SEED Sets random seed
-v, --verbose Verbose. Show progress processing files.
-n, --name PATTERN Filter run on /pattern/ or string.
Known extensions: pride
-p, --pride Pride. Show your testing pride!
يعد هذا خطأً صغيرًا، ولكن بقدر ما أستطيع العثور عليه، فأنا لا أقوم بتشغيل minitest في أي مكان.أي فكرة من أين يمكن أن يأتي هذا؟
spec_helper
require 'rubygems'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rspec'
require 'monban/test/helpers'
require 'rails/test_help'
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
Monban.test_mode!
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.include FactoryGirl::Syntax::Methods
config.include Monban::Test::Helpers, type: :feature
config.include Monban::Test::ControllerHelpers, type: :controller
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
config.before :each do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
config.after :each do
Monban.test_reset!
end
end
ملف الحرس
guard :rspec, cmd: 'spring rspec' do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
# Rails example
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }
# Capybara features specs
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
# Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end
المحلول
اتضح أنني كنت أقوم بتشغيل Minitest بسبب هذا الخط في جهازي spec_helper
:
require 'rails/test_help'
إزالة هذا يجعلها لا تعمل على أقل تقدير.ومع ذلك، أضفت هذا السطر لإبقاء مخطط الاختبار الخاص بي محدثًا مع مخطط التطوير الخاص بي، ميزة جديدة في القضبان 4.1.ما كان يجب علي فعله هو إزالة هذا السطر من ملفي spec_helper
:
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
واستبدلته بهذا:
ActiveRecord::Migration.maintain_test_schema!
يبدو أن هذا هو rspec المكافئ لأصغر سطر قمت بإزالته.لقد وجدت هذا في مولدات rspec هنا: https://github.com/rspec/rspec-rails/blob/aa5c5f76a9ae847648f48e0ea7802b8e83c11d0f/lib/generators/rspec/install/templates/spec/spec_helper.rb.tt#L15-L23
الآن يظل مخططي محدثًا ولا يعمل الإصدار الأصغر.
نصائح أخرى
كان لديه نفس المشكلة.بالنسبة لي، إزالة test-unit
جوهرة أصلحته.
بعض الأحجار الكريمة الأخرى يمكن أن تسبب هذا أيضًا:https://github.com/guard/guard-rspec/issues/169