2012-05-30 17 views
11

Sto cercando di iniziare a testare ActiveAdmin, in particolare ho bisogno di testare un membro_azione da uno dei controller ActiveAdmin.Test ActiveAdmin con rspec

Ragazzi, conoscete qualche buon tutorial su questo argomento?

Grazie,

risposta

20

Questo è il modo in cui ho fatto che ha funzionato per me: -

app/admin/posts.rb

ActiveAdmin.register Post do 

    menu :parent => "Admin" 


    #path = /admin/posts/:id/comments 
    member_action :comments do 
    @post = Post.find(params[:id]) 
    end 
end 

spec/controller/admin/posts_controller_spec. rb

require 'spec_helper' 
include Devise::TestHelpers 


describe Admin::PostsController do 
    render_views 

    before(:each) do 
    @user = mock_model(User, :email => "[email protected]") 
    request.env['tester'] = mock(Tester, :authenticate => @user, :authenticate! => @user) 
    end 

    describe "Get comments" do 
    before(:each) do 
     @post = Post.create! valid_attributes 
     Post.should_receive(:find).at_least(:once).and_return(@post) 
     get :comments, :id => @post.id 
    end 

    after(:each) do 
     @post.destroy 
    end 

    it "gets the proper record to update" do 
     assigns(:post).should eq(@post) 
    end 

    it "should render the actual template" do 
     response.should contain("Comments") 
     response.body.should =~ /Comments/m 
    end 
    end 
end 
+0

ottengo un errore "variab locale non definita le o metodo 'request 'per # " – Calin

+1

Ho capito, devo memorizzare le mie specifiche in spec/controller in modo che Rspec aggiunga automaticamente i metodi di richiesta alle mie specifiche – Calin

+2

Che cos'è Tester in questo esempio? –

4
# app/admin/post.rb 
ActiveAdmin.register Post do 
end 

# spec/controller/admin/posts_controller_spec.rb 
describe Admin::PostsController do 
    subject { get :index } 
    its(:status) { should eq 200 } 
end 
+1

Ho riscontrato questo errore: 'costante non inizializzata Admin (NameError)' Per favore, aiuto. :) – across

+0

@across Questo perché il tuo spazio dei nomi potrebbe essere diverso o non caricato. Forse stai usando 'spec/spec_helper.rb' invece di' spec/rails_helper.rb' (una nuova domanda di overflow dello stack sarebbe la strada da percorrere per risolverlo). – Dorian