Testing Rails 3.1 montowany silnik z Rspec

Zacząłem tworzyć Silnik Rails 3.1 i ciężko mi go testować przy użyciu rspec.

Po pierwsze, jeśli uruchamiam rails g integration_test whatever to tworzy zwykły test integracji w tests / integration zamiast spec / requests (RSpec-rails gem jest zainstalowany i wymagany jako zależność deweloperska w pliku gemspec)

Ponadto, gdy uruchamiam test spec, pojawia się błąd mówiący, że tabela odpowiadająca modelowi, który testuję, nie została utworzona. Próbowałem rake engine_name:install:migrations i biegałem rake db:migrate od wewnątrz atrapa aplikacji i dostaję błąd "Tabela już istnieje".

Wszystko wydaje się po prostu odłączone, czuję, że brakuje mi tutaj czegoś, aby RSpec gem działał płynnie, jak zwykle z pełnymi aplikacjami rails.

Śledziłem wszystkie zmiany stąd http://rubyx.com/2011/03/01/start-your-engines i mogę przetestować silnik ręcznie, uruchamiając atrapę aplikacji za pomocą konsoli, jak pokazano tutaj http://railscasts.com/episodes/277-mountable-engines .

Czy Jest jakiś sposób, aby RSpec był domyślnie używany do testowania silnika rails 3.1?

Author: deb, 2011-09-17

2 answers

Używam RSpec z silnikiem Rails bez problemów.

Stworzyłem wtyczkę używając następujących przełączników: - t --full --dummy-path=spec / dummy.

  • -T wyłącza test / jednostkę
  • --full wskazuje, że wtyczka jest silnikiem
  • --dummy-path jest po prostu tak, że nie otrzymujemy katalogu testowego (the domyślnie jest test/dummy).

Stamtąd użyłem spec_helper z artykułu "start your engines":

# Configure Rails Envinronment
ENV["RAILS_ENV"] = "test"
require File.expand_path("../dummy/config/environment.rb",  __FILE__)

require 'rspec/rails'

ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[File.join(ENGINE_RAILS_ROOT, "spec/support/**/*.rb")].each {|f| require f }

RSpec.configure do |config|
  config.use_transactional_fixtures = true
end
Do generatorów. Dodaję a config.Generatory blokują mój silnik.plik rb jak tak:
module MyEngine
  class Engine < Rails::Engine
    config.generators do |g|
      g.test_framework :rspec, :view_specs => false
    end
  end
end
Dzięki temu jestem w stanie wykonać testy rspec podczas uruchamiania generatora takiego jak generator modelowy.

Co do DB, to twoja baza danych.poprawnie skonfigurowany plik yml? Czy załadowałeś środowisko testowe, np. rake db:test:clone lub rake db:migrate RAILS_ENV=test? Domyślam się, że RSpec nie widzi Twoich tabel, ponieważ nie ma ustawionej testowej bazy danych.

 62
Author: dwhite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-26 12:11:15

Szukałem tej samej odpowiedzi i znalazłem Gem spalania *, który obiecuje skonfigurować pełne środowisko do spec ' uning silnika w prostszy sposób. Wystarczy dodać

gem.add_development_dependency 'combustion', '~> 0.3.1'

Do twojego gemspec i biegnij

bundle exec combust

Aby odtworzyć pełną aplikację rails w katalogu spec.

* jeszcze nie próbowałem...

 9
Author: Fabio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-07 18:35:38