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?
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.
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...
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