以下は、gem からの Rails コントローラー統合テストの最小限の例です。
my_gem
. 単純な rspec セットアップ (たとえばrspec --init
) を使用して gem ルートにいるとします。するとspec/rails_controller_integration_spec.rb
こんな感じになります。
rspec/rails
メタタグに基づいてグループ タイプの例を設定する必要があります。rspec/rails/example
メタタグ:type => :controller
は適切な group モジュールの組み込みを促進し、Rails コントローラー仕様のすべての利点とlikeのすべてのRSpec::Rails::ControllerExampleGroup
利点を提供します。ActionController::TestCase
get/post
お役に立てれば。
Rails 環境がどのように割り当てられるかはまだわかりません。特に、2 つのアプリTestTailsApp1
とTestTailsApp2
. 何かアドバイス?
require 'spec_helper'
require 'my_gem'
require 'rails'
require 'action_controller/railtie' # allows ActionController::Base
# crucial part here:
require 'rspec/rails'
# note that require 'rspec-rails' does not work
module TestRailsApp
class Application < Rails::Application
# app config here
# config.secret_token = '572c86f5ede338bd8aba8dae0fd3a326aabababc98d1e6ce34b9f5'
# routes.draw do
# resources :models
# end
end
class ApplicationController < ActionController::Base
# setup
end
end
describe 'My gem' do
context "in a Rails controller", :type => :controller do
controller(TestRailsApp::ApplicationController) do
extend(RSpec::Rails::ControllerExampleGroup::BypassRescue)
# example-specific setup for anonymous controller
# https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/anonymous-controller
def index
end
end
before(:each) do
# request needs to be setup to avoid path setting error
@request = ActionController::TestRequest.new
end
describe "#index" do
it "works" do
get :index
response.body.should == 'index content'
end
end
end
end