سؤال

أنا أقوم بتشغيل 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top