2012-05-30 2 views
11

Я пытаюсь начать тестирование ActiveAdmin, в частности мне нужно протестировать member_action с одного из контроллеров ActiveAdmin.Тестирование ActiveAdmin с помощью rspec

Вы, ребята, знаете хорошие учебники по этой теме?

Спасибо,

ответ

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. гь

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 или method 'request 'для # " – Calin

+1

Я получил его, я должен хранить свои спецификации в спецификациях/контроллерах, чтобы Rspec автоматически добавлял методы запроса к моим спецификациям – Calin

+2

Что такое тестер в этом примере? –

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

У меня возникла ошибка: 'uninitialized constant Admin (NameError)' Пожалуйста, помогите. :) – across

+0

@across Это потому, что ваше пространство имен может отличаться или не загружаться. Возможно, вы используете 'spec/spec_helper.rb' вместо' spec/rails_helper.rb' (новый вопрос о переполнении стека станет способом решить проблему). – Dorian

Смежные вопросы