2012-05-30 18 views
11

Próbuję rozpocząć testowanie ActiveAdmin, w szczególności muszę przetestować member_action z jednego z kontrolerów ActiveAdmin.Testowanie ActiveAdmin z rspec

Czy znacie jakieś dobre tutoriale na ten temat?

Dziękuję

Odpowiedz

20

ten sposób zrobiłem to, że pracował dla mnie: -

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

pojawia się błąd „niezdefiniowany lokalny variab le lub metoda 'request 'dla # " – Calin

+1

Mam to, muszę przechowywać moje specyfikacje w specyfikacji/kontrolerach, aby Rspec automatycznie dodawał metody żądania do moich specyfikacji – Calin

+2

Co to jest Tester w tym przykładzie? –

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

Mam następujący błąd: 'niezainicjowana stała Admin (NameError)' Proszę, pomóż. :) – across

+0

@across To dlatego, że twoja przestrzeń nazw może być inna lub nie załadowana. Być może używasz 'spec/spec_helper.rb' zamiast' spec/rails_helper.rb' (nowe pytanie o przepełnienie stosu byłoby sposobem na rozwiązanie problemu). – Dorian

Powiązane problemy