2012-05-30 37 views
11

Tôi đang cố bắt đầu thử nghiệm ActiveAdmin, đặc biệt tôi cần kiểm tra member_action từ một trong các bộ điều khiển ActiveAdmin.Thử nghiệm ActiveAdmin với rspec

Các bạn có biết bất kỳ hướng dẫn hay về chủ đề này không?

Cảm ơn bạn,

Trả lời

20

Đây là cách tôi đã làm nó mà làm việc cho tôi: -

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 

đặc tả/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

tôi nhận được một lỗi "variab địa phương không xác định le hoặc method 'request 'cho # " – Calin

+1

Tôi hiểu rồi, tôi phải lưu thông số kỹ thuật của tôi trong spec/controller để Rspec tự động thêm các phương thức yêu cầu vào thông số kỹ thuật của tôi – Calin

+2

Trình kiểm tra trong ví dụ này là gì? –

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

Tôi gặp phải lỗi này: 'Quản trị viên không xác định (Tên lỗi)' Xin vui lòng, trợ giúp. :) – across

+0

@across Đó là do không gian tên của bạn có thể khác hoặc không được tải. Có lẽ bạn đang sử dụng 'spec/spec_helper.rb' thay vì' spec/rails_helper.rb' (một câu hỏi tràn ngăn xếp mới sẽ là cách để làm cho nó được giải quyết). – Dorian

Các vấn đề liên quan