RSpec - Капибара и Пума - Ошибка маршрутизации - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь использовать Capybara как интерфейсный набор тестов (Vue) и получаю следующую ошибку от Puma:

Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"

     ActionController::RoutingError:
       No route matches [GET] "/login"

В чем причина этого и как я могупочини это?Это как-то связано с конфигом?Дайте мне знать, если мне нужно включить больше кода в мой вопрос.

rails_helper.rb:

ENV['RAILS_ENV'] ||= 'test'

require File.expand_path('../../config/environment', __FILE__)

abort("The Rails environment is running in production mode!") if Rails.env.production?

require 'spec_helper'
require 'rspec/rails'
require "pundit/rspec"
require "capybara/rails"
require "capybara/rspec"
require "capybara/poltergeist"
require 'database_cleaner'
require 'factory_girl'
require 'shoulda/matchers'
require "paperclip/matchers"
require 'support/spec_helpers/warden_controller_helpers'
require 'webmock/rspec'
require 'support/spec_helpers/webmock_helper'


Capybara.javascript_driver = :poltergeist

login_spec.rb:

require 'rails_helper'

RSpec.feature "User login", type: :feature, js: true do

  before :each do
      @user = User.create!(
        first_name: "Bob",
        last_name: "Brown",
        email: "bob@email.com",
        password: "bob1",
        has_accepted_terms: true
      )
    end

  scenario "User logs in with correct credentials" do
    visit root_path
    save_screenshot
    click_on 'Log In'
    sleep 1
    save_screenshot

  end

end

1 Ответ

0 голосов
/ 20 мая 2018

Так что, если я запустил сервер разработки и перейду на 'localhost:3000 (что, в сущности, вы и говорите Капибаре), то на странице появится неработающая ссылка «Войти», которая указывает на app.localhost:3000/login, чтоприложение не обрабатываетЭто связано с тем, что при посещении URL-адреса без субдомена app используется макет application.html.haml, в котором отсутствует JS (и, следовательно, нет маршрутизатора Vue для обработки пути /login).Если, однако, я перехожу на app.localhost:3000 в браузере, то появляется страница с работающей ссылкой Log In, так как все JS загружаются на эту страницу (включая маршрутизатор Vue), потому что он использует макет app.html.haml (BaseController)

Вам необходимо исправить ссылку на главную домашнюю страницу, чтобы она функционировала правильно и / или настроить Capybara для подключения к субдомену app по умолчанию

Capybara.app_host = 'http://app.localhost' # hostname with ‘app’ sub domain that resolves to interface the AUT is being run on
Capybara.always_include_port = true 

По сути, Capybaras сообщает вам, что главная страница ваших приложений не работает, посколькуоно сломано.

...