isolate_namespace пропускает Rails :: Engine :: ActionDispatch при запуске в rspec - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь написать модуль для существующего приложения rails (decidim), используя TDD.Когда я запускаю рабочий код с помощью rails runner, проблем нет:

decidim@elektori:~/elovalasztok$ rails runner lib/decidim/condorcet.rb 
decidim@elektori:~/elovalasztok$

Когда я запускаю с rspec, отсутствует зависимость:

decidim@elektori:~/elovalasztok$ rspec 

An error occurred while loading ./spec/condorcet_spec.rb.
Failure/Error: isolate_namespace Decidim::Condorcet::Admin

NameError:
  uninitialized constant Rails::Engine::ActionDispatch
# ./lib/decidim/condorcet/admin_engine.rb:5:in `<class:AdminEngine>'
# ./lib/decidim/condorcet/admin_engine.rb:4:in `<module:Condorcet>'
# ./lib/decidim/condorcet/admin_engine.rb:3:in `<module:Decidim>'
# ./lib/decidim/condorcet/admin_engine.rb:2:in `<top (required)>'
# ./lib/decidim/condorcet.rb:2:in `<top (required)>'
# ./spec/condorcet_spec.rb:1:in `<top (required)>'


Finished in 0.00041 seconds (files took 1.39 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

decidim@elektori:~/elovalasztok$

Первая строка спецификацииФайл, который вызывает проблему, выглядит следующим образом:

require 'decidim/condorcet'

Соответствующие файлы:

decidim@elektori:~/elovalasztok$ cat lib/decidim/condorcet.rb 
require "decidim/condorcet/admin"
require "decidim/condorcet/admin_engine"
module Decidim
  module Condorcet
      include ActiveSupport::Configurable
  end
end
decidim@elektori:~/elovalasztok$ cat lib/decidim/condorcet/admin_engine.rb 
require 'rails/engine'
module Decidim
    module Condorcet
        class AdminEngine < ::Rails::Engine
            isolate_namespace Decidim::Condorcet::Admin
        end
    end
end

Я даже не уверен, что строка require 'rails/engine' должна быть в condorcet.rbили какое-то другое место.И я не мог понять, что требуется, чтобы покрыть Rails::Engine::ActionDispatch.

Где я должен объявить свои зависимости, и что такое для Rails::Engine::ActionDispatch?

1 Ответ

0 голосов
/ 03 января 2019

Итак, есть драгоценный камень rspec-rails: https://github.com/rspec/rspec-rails Это в основном заботится о зависимостях рельсов. Я сделал следующее (уже имелась зависимость в Gemfile):

rails generate rspec:install

для установки необходимых файлов

добавил

require 'rails_helper'

в файл спецификации, и запустил

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