행동

2016-06-11 3 views
0
내가 고안 사용하고

에 대한 인증 된 사용자를 확인하고 특정 컨트롤러 액션 내가 고안의 문서를 통해 검토 한 결과 authenticate_user!행동

에 의해 보호됩니다 내 사양에서 확인 할, 정말 간단하고 분명 내가 거기에 뭔가 느낌이 방법을 고안해내는 방법을 모르겠다.

this SO post을 기반으로 확인하려면 사양을 만들었지 만 작동하지 않는 것 같습니다. 내가 사양을 실행하면

, 내가 얻을 :

Failure/Error: expect(controller).to receive(:authenticate_user!) 

    (#<LibrariesController:0x000001035639f8>).authenticate_user!(*(any args)) 
     expected: 1 time with any arguments 
     received: 0 times with any arguments 

libraries_controller_spec.rb

require 'rails_helper' 

RSpec.describe LibrariesController, type: :controller do 

    let(:valid_attributes) { 
    skip("Add a hash of attributes valid for your model") 
    } 

    let(:invalid_attributes) { 
    skip("Add a hash of attributes invalid for your model") 
    } 

    let(:valid_session) { {} } 

    describe "GET #index" do 
    it "should be authenticated" do 
     get :index, {} 
     expect(controller).to receive(:authenticate_user!) 
    end 
    end 
end 

그리고 컨트롤러 자체 :

libraries_controller.rb

class LibrariesController < ApplicationController 
    before_action :set_library, only: [:show, :edit, :update, :destroy] 
    before_action :authenticate_user! 

    # GET /libraries 
    # GET /libraries.json 
    def index 
    @libraries = Library.all 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_library 
     @library = Library.find(params[:id]) 
    end 
end 

답변

1

음, 당황 스러웠습니다. 내 스펙에서 잘못된 순서로 기대와 메소드 호출을했다. 그것은 다음과 같아야합니다 :

describe "GET #index" do 
    it "should be authenticated" do 
    expect(controller).to receive(:authenticate_user!) 
    get :index, {} 
    end 
end