Минитест и Rspec на одном проекте - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над проектом, в котором используется тестовая среда rails по умолчанию, и мы решили перейти на Rspec. На данный момент я хотел бы сохранить старые тесты, но с установленным Rspec кажется, что он нарушает команду rails test. Это работает, если я уберу камень rspec-rails. Есть ли способ использовать rails test с minitest без удаления rspec?

Логи:

rake aborted!
NoMethodError: undefined method `have_many' for RSpec::ExampleGroups::Benefit:Class
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:738:in `method_missing'
/home/circleci/repo/test/models/benefit_test.rb:36:in `block in <class:BenefitTest>'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:387:in `module_exec'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:387:in `subclass'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:260:in `block in define_example_group_method'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/dsl.rb:43:in `block in expose_example_group_alias'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/dsl.rb:84:in `block (2 levels) in expose_example_group_alias_globally'
/home/circleci/repo/test/models/benefit_test.rb:4:in `<class:BenefitTest>'
/home/circleci/repo/test/models/benefit_test.rb:3:in `<top (required)>'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/test_unit/runner.rb:50:in `block in load_tests'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/test_unit/runner.rb:50:in `each'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/test_unit/runner.rb:50:in `load_tests'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/test_unit/runner.rb:39:in `run'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/test_unit/runner.rb:35:in `rake_run'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/test_unit/testing.rake:16:in `block in <top (required)>'
/home/circleci/repo/vendor/bundle/ruby/2.6.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => test
(See full trace by running task with --trace)
Coverage report generated for RSpec to /home/circleci/repo/coverage. 1644 / 3636 LOC (45.21%) covered.
Exited with code 1

1 Ответ

1 голос
/ 11 июля 2019

Теоретически, rspec может работать вместе с мини-тестом, have_many выглядит как совпадение, должно быть, из чего-то вроде

describe "Thing" do
  it { should have_many :sub_things }
end

Есть ли в вашем Gemfile драгоценный камень musta-matchers (в разделе: группа тестирования) и сконфигурированы ли в вашей хелперской программе specs :: Matchers?

Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end

https://github.com/thoughtbot/shoulda-matchers, чтобы узнать больше о настройке. Я не совсем уверен, но я предполагаю, что для работы с minitest требуется какая-то конфигурация.

...