Ошибка маршрутизации при тестировании функций с помощью RSpec - PullRequest
0 голосов
/ 26 сентября 2018

Я работаю над проектом и пытаюсь написать несколько тестов для него.В данный момент я делаю функциональные тесты.
Проблема: я просто не могу использовать посещение .Неважно, где я его использую.Я получаю сообщение об ошибке: ActionController :: RoutingError: Маршрут не соответствует [GET] "/" .

Вот простой пример теста:

require 'rails_helper'

RSpec.feature "Welcome", type: :feature do
  context 'sign in user and load index' do
    visit new_user_session_path  #didn't worked with "/" nor "/login" either
  end
end

Может это проблема с RSpec?Я просто не знаю, как это исправить.

Я очень рад, если кто-нибудь попытается мне помочь.

РЕДАКТИРОВАТЬ:

Routes.rb:

Rails.application.routes.draw do
  REGEX_NAME = /[^\/]+/

  constraints OperatorSubdomain do

    get '/', to: 'operators#index'

    devise_for :operators, controllers: {
      sessions: 'operators/sessions'
    }, skip: %i[registrations passwords unlocks omniauth_callbacks confirmations]

    authenticate :operator do
      require 'sidekiq/web'
      mount Sidekiq::Web => '/sidekiq'
      Sidekiq::Web.set :sessions, false
      ActiveAdmin.routes(self)
    end
  end

  constraints AppSubdomain do 
    root 'welcome#index'

  scope '/', module: 'welcome' do
    get '/faq', action: :faq
    get '/impressum', action: :imprint
  end

  get '/partners', to: 'companies#my_partners', as: :partners
  delete '/partners', to: 'companies#destroy_partnership'

  devise_scope :user do
    get  '/login' => 'users/sessions#new', as: :new_user_session
    post '/login' => 'users/sessions#create', as: :user_session

    get '/register' => 'users/registrations#new', as: :new_user_registration
    post '/register' => 'users/registrations#create', as: :user_registration

    delete '/logout', to: 'users/sessions#destroy', as: :destroy_user_session

    post '/users/notification_token', to: 'users/sessions#set_login_time', as: :notification_token

    get '/users/invitation', to: 'users#invitation', as: :users_invitation
    post '/users/invitation', to: 'users#complete_invitation'
  end

  scope '/setup', module: :setup do
    get '/', action: :index, as: :setup
    post '/', action: :create
  end

  devise_for :users, controllers: {
      omniauth_callbacks: 'users/omniauth_callbacks',
      confirmations: 'users/confirmations',
      registrations: 'users/registrations',
      passwords:     'users/passwords'
  }, skip: :session


  scope '/profiles/:name', module: :users, constraints: { name: REGEX_NAME } do
    get '/', action: :show, as: :profile
    put '/', action: :update
  end

Это важная часть маршрутов. Я думаю, что

1 Ответ

0 голосов
/ 26 сентября 2018

Вы должны использовать scenario вместо context:

RSpec.feature "Welcome", type: :feature do
  scenario 'sign in user and load index' do
    visit new_user_session_path  #didn't worked with "/" nor "/login" either
  end
end

РЕДАКТИРОВАТЬ:

Похоже, вы используете поддоменов, это правильно?Если да, вы должны взглянуть https://robots.thoughtbot.com/acceptance-tests-with-subdomains

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...