2012-05-30 14 views
11

Ich versuche, ActiveAdmin testen zu testen, insbesondere muss ich eine member_action von einem der ActiveAdmin-Controller testen.ActiveAdmin mit rspec testen

Kennen Sie irgendwelche gute Tutorials zu diesem Thema?

Danke,

Antwort

20

Dies ist die Art, wie ich es tat, die für mich gearbeitet: -

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/controllers/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

ich erhalte eine Fehlermeldung „undefiniert lokalen variab le oder Methode 'request 'für # " – Calin

+1

Ich habe es, ich muss meine Spezifikationen in spec/Controller speichern, so dass Rspec automatisch die Anfrage Methoden zu meinen Spezifikationen hinzufügen wird – Calin

+2

Was ist Tester in diesem Beispiel? –

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

Ich habe diesen Fehler: 'nicht initialisierte Konstante Admin (NameError)' Bitte, helfen Sie. :) – across

+0

@across Das liegt daran, dass Ihr Namespace möglicherweise anders oder nicht geladen ist. Vielleicht benutzen Sie 'spec/spec_helper.rb' anstelle von' spec/rails_helper.rb' (eine neue Stapelüberlauffrage wäre der Weg, um es zu lösen). – Dorian