Не могу загрузить такой файл - капибара / минитест

Надеюсь, кто-нибудь может помочь мне с этим. Я искал, но не нашел никакого рабочего решения.

Я начал писать тест для приложения. Мои интеграционные тесты работают нормально, но потом я решил, что, поскольку я не так уж сильно ориентирован на TDD и у меня сейчас не так много времени, чтобы тщательно протестировать все уровни приложения, которые я должен использовать вместо integration тесты system тесты, потому что они позволяют мне тестировать весь поток, как будто в браузере.

Rails 5.1.2

Gemfile(пробовал разные вариации, просто капибара, потом с комбинациями обоих двух других)

gem 'minitest-rails'
gem 'minitest-rails-capybara'
gem 'capybara'

test_helper.rb

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
  # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
  fixtures :all

  EMPTY_NEW_USER = {
    email: '',
    first_name: '',
    last_name: '',
    username: '',
    password: ''
  }

  EXISTING_USER = {
    email: '****',
    first_name: 'John',
    last_name: 'Doe',
    username: '',
    password: 'testingpass',
    password_confirmation: 'testingpass'
  }

  # Add more helper methods to be used by all tests here...
end

application_system_test_case.rb

require "test_helper"

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
end

register_logins.rb

require "application_system_test_case"

class RegisterLoginsTest < ApplicationSystemTestCase

  test 'full login flow' do
    visit root_url
    assert_response :success

    find('.email_link').click


  end
end

ошибка при запуске

rake test:system

LoadError: cannot load such file -- capybara/minitest
/Users/mnussbaumer/code/dvouch/test/application_system_test_case.rb:3:in `<top (required)>'
/Users/mnussbaumer/code/dvouch/test/system/register_logins_test.rb:1:in `<top (required)>'
Tasks: TOP => test:system
(See full trace by running task with --trace)

Полная трассировка добавляет это:

LoadError: cannot load such file -- capybara/minitest
/Users/mnussbaumer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-5.1.2/lib/active_support/dependencies.rb:292:in `require'
/Users/mnussbaumer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-5.1.2/lib/active_support/dependencies.rb:292:in `block in require'
/Users/mnussbaumer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-5.1.2/lib/active_support/dependencies.rb:258:in `load_dependency'
/Users/mnussbaumer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-5.1.2/lib/active_support/dependencies.rb:292:in `require'
/Users/mnussbaumer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-5.1.2/lib/action_dispatch/system_test_case.rb:2:in `<top (required)>'
/Users/mnussbaumer/code/dvouch/test/application_system_test_case.rb:3:in `<top (required)>'

и продолжается на зависимости active_support.

Что я пробовал:

Добавление одного, двух и трех к test_helper.rb:

require "capybara/rails"
require "minitest/rails"
require "minitest/rails/capybara"

Я пробовал с драгоценными камнями:

group :development, :test do
  gem 'minitest-rails'
  gem 'minitest-capybara'
  gem 'capybara'
end

затем с 'minitest-rails-capybara'

Спасибо

1 ответ

Решение

Файл capybara/minitest был добавлен в Capybara в версии 2.13.0, которая является минимальной версией, которую Rails требует для своих системных тестов, начиная с Rails 5.1.0. Обновите Capybara до последней версии (2.14.4), и в этом не должно быть необходимости minitest-capybara или же minitest-rails драгоценные камни. Вам также необходимо добавить гем 'selenium-webdriver' в свою группу тестирования.

Дополнительно assert_response :success Неверная строка в тестах Capybara, потому что код ответа HTTP из браузера, который использует Capybara, обычно недоступен.

Другие вопросы по тегам