Pertanyaan Pengujian Rails 3.1 mountable engine dengan Rspec


Saya mulai membuat mesin 3.1 Rails, dan saya mengalami kesulitan mengujinya menggunakan rspec.

Pertama-tama, jika saya lari rails g integration_test whatever itu menciptakan tes integrasi reguler dalam tes / integrasi bukannya spec / permintaan (rspec-rails gem diinstal dan diperlukan sebagai pengembangan ketergantungan dalam file gemspec)

Juga, ketika saya menjalankan tes spesifikasi saya mendapatkan kesalahan mengatakan tabel yang sesuai dengan model yang saya uji belum dibuat. Saya mencoba rake engine_name:install:migrations dan berlari rake db:migrate dari dalam aplikasi tiruan, dan saya mendapatkan kesalahan "tabel sudah ada".

Semuanya sepertinya terputus, saya merasa saya kehilangan sesuatu di sini untuk membuat permata rspec bekerja mulus seperti biasanya dengan aplikasi rel penuh.

Saya mengikuti semua perubahan dari sini http://rubyx.com/2011/03/01/start-your-engines dan saya dapat menguji mesin secara manual dengan meluncurkan aplikasi dummy melalui konsol seperti yang ditunjukkan di sini http://railscasts.com/episodes/277-mountable-engines.

Apakah ada cara untuk membuat rspec default untuk menguji mesin 3.1 rel?


37
2017-09-17 02:23


asal


Jawaban:


Saya menggunakan RSpec dengan mesin Rails tanpa masalah.

Saya membuat plugin saya menggunakan switch berikut: -T --full --dummy-path = spec / dummy.

  • -T tidak termasuk tes / unit
  • --full menunjukkan bahwa plugin adalah mesin
  • --dummy-path hanya agar kita tidak mendapatkan direktori tes (the default adalah test / dummy).

Dari sana saya menggunakan spec_helper dari artikel "mulai mesin Anda":

# 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

Untuk generator. Saya menambahkan konfigurasi config.generators ke file engine.rb seperti ini:

module MyEngine
  class Engine < Rails::Engine
    config.generators do |g|
      g.test_framework :rspec, :view_specs => false
    end
  end
end

Dengan itu, saya bisa mendapatkan tes rspec ketika menjalankan generator seperti model generator.

Adapun DB, apakah file database.yml Anda diatur dengan benar? Apakah Anda memuat lingkungan pengujian, mis. rake db:test:clone atau rake db:migrate RAILS_ENV=test? Tebakan saya adalah bahwa RSpec tidak dapat melihat tabel Anda karena tidak ada database pengujian yang disiapkan.


62
2017-09-19 14:09



Saya mencari jawaban yang sama dan saya temukan permata pembakaran* yang menjanjikan untuk mengatur lingkungan penuh untuk menentukan mesin Anda dengan cara yang lebih sederhana. Tambahkan saja

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

ke gemspec Anda dan jalankan

bundle exec combust

untuk mereproduksi aplikasi rel lengkap di direktori spesifikasi Anda.

* Saya belum mencobanya ...


9
2018-03-14 00:09