私はrspecテストが初めてで、理解できないことがあります。
私を助けることができるなら、私は本当に助けに感謝します。
ファイル構造:
app/models/booking.rb
app/models/user.rb
app/models/role.rb
app/models/ability.rb
app/controllers/bookings_controller.rb
app/views/bookings/index.html.erb
app/views/dashboard/index.html.erb
app/spec/controllers/bookings_controller_spec.rb
同様の問題でこのリンクを読みましたが、解決されていません
<"index"> を期待しているが <""> でレンダリングする Rspec コントローラー エラー
この行を変更すると、次のようになります。
it 'should not render index template from bookings' do
get :index
=> response.should_not render_template(:index)
end
この他の場合:
it 'should not render index template from bookings' do
get :index
=> response.should render_template(:index)
end
リンクと同じ間違いが発生します
<"index"> を想定していますが、<""> でレンダリングします
理由がわからないのですが?これが私のコードです:
私の仕様:
describe BookingsController do
context 'as guest' do
before(:each) do
@user = User.new(:email => 'mail_admin@test.com',
:username => 'admin',
:password => 'password_admin',
:password_confirmation => 'password_admin')
@user.save
#when i save, with gem CanCan i assign a default role to @user
#with the default role the user only can see the views/dashboard/index.html.erb
end
it 'should not render index template from bookings' do
get :index
response.should_not render_template(:index)
end
end
end
コントローラ:
class BookingsController < ApplicationController
load_and_authorize_resource
def index
...
end
def show
...
end
end
私のモデル:
class Booking < Activerecord::Base
paginates_per 20
def
...
end
def
...
end
end
ユーザー:
Class User < ActiveRecord::Base
after_save :set_default_role
rolify
.
.
.
.
def set_default_role
self.add_role :default
end
end
役割:
class Role < ActiveRecord::Base
ROLES = {"admin" => "Admin", "default" => "Default"}
.
.
.
.
scopify
end
能力:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :data_consistency
can :read, Booking
end
end
end