RSPEc - неопределенный метод "заглушки" для # - PullRequest
2 голосов
/ 27 августа 2011

Я пытаюсь написать rspec для моего контроллера Rooms для проверки разрешений с помощью CanCan, но продолжаю получать сообщение об ошибке в заголовке. Я следую инструкциям в разделе «Проверка контроллера»: https://github.com/ryanb/cancan/wiki/Testing-Abilities

room_controller_spec.rb

require 'spec_helper'

describe RoomsController do

  before(:each) do
    @user_1 = Factory.create(:user, :password => 'password')
    @room_for_user_1 = Room.create(:user_id => @user_1.id)

    @ability = Object.new
    @ability.extend(CanCan::Ability)
    @controller.stubs(:current_ability).returns(@ability)
  end

  describe "Room Permissions" do

    it "should allow a user to join a room" do
      @ability.can :show, @room_for_user_1
      get :show, { :uuid => @room_for_user_1.uuid }
      response.should render_template("show")
    end

  end

end

Какой-нибудь совет, как я могу заставить работать devise + CanCan + RSpec, чтобы я мог протестировать контроллер? Спасибо

Ответы [ 2 ]

6 голосов
/ 27 августа 2011

Это не синтаксис RSpec, вам нужно:

@controller.stub!(:current_ability).and_return(@ability)
0 голосов
/ 16 декабря 2018

Новая версия 3.8 allow Синтаксис.

allow( @controller ).to receive( :current_ability ).and_return( @ability )

Согласно Смак 3.8 документов .

...