2012-05-30 97 views
11

我想要開始測試ActiveAdmin,特別是我需要測試ActiveAdmin控制器之一的member_action。使用rspec測試ActiveAdmin

你們知道這個話題有什麼好的教程嗎?

謝謝

回答

20

這是我做的,對我的工作方式: -

應用程序/管理/ 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 

規格/控制器/管理/ 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

我得到一個錯誤「未定義本地variab le或方法'請求'爲#「 – Calin

+1

我明白了,我必須將規格存儲在spec/controllers中,以便Rspec自動將請求方法添加到我的規格中 – Calin

+2

這個例子中的Tester是什麼? –

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

我遇到此錯誤: '未初始化的常量Admin(NameError)' 請幫忙。 :) – across

+0

@across這是因爲你的名字空間可能不同,或者沒有加載。也許你正在使用'spec/spec_helper.rb'而不是'spec/rails_helper.rb'(一個新的堆棧溢出問題將成爲解決它的方法)。 – Dorian