2015-12-10 4 views
3

Я определил пользовательское действие как подкласс ailsAdmin::Config::Actions::Base. Под действием, которое я определил a custom controller - register_instance_option :controllerПроверки Rspec для пользовательских действий контроллера rails_admin?

Контроллер проходит и удаляет определенные поврежденные записи и, похоже, отлично работает с моими испытаниями. Если бы это был обычный контроллер, я бы написал контроллер spec для этого controller, но я не знаю, как написать specs для пользовательских rails_adminactions вот так.

Я посмотрел на spec в rails_admin repository, но это не похоже, чтобы помочь мне много: https://github.com/sferik/rails_admin/blob/master/spec/rails_admin/config/actions/base_spec.rb

Я хотел бы сделать нормальный controller spec где я проверяю размещение в конечную точку, а затем увидеть, если метод вызывается на an object, который, как представляется, не работает. Я не мог найти полезные сообщения в Интернете об использовании Rspec с пользовательскими rails_admin actions.

ответ

-1

У меня есть кто-то, кто поможет мне в этом. Контроллер может быть проверен следующим образом:

describe RailsAdmin::MainController, :type => :controller do 

но одна меня были проблемы маршрутизации, даже когда я добавил Rails администратора URL помощников spec_helper.rb. Хитрость заключается в том, что при нажатии контроллера вы должны сделать это так:

post :custom_rails_admin_route, { :use_route => :rails_admin } 

Tada!

+2

я получаю: неинициализированная постоянную RailsAdmin (NameError). Любое предложение? – hcarreras

+0

FYI, этот метод ': use_route' не устарел, вместо этого вы хотите использовать' @routes = RailsAdmin :: Engine.routes' в тестовой настройке, см. Http://guides.rubyonrails.org/v4.2.7.1 /engines.html#functional-tests –

1

Вот мои настройки:

RSpec.describe RailsAdmin::MainController, type: :controller do 
routes { RailsAdmin::Engine.routes } 

describe '#my_custom' do 
    subject { get :my_custom, { model_name: 'my_model', id: my_model.id } } 

    it "should respond with 302" do 
    expect(response.code).to eq("302") 
    end 
end 
end 
Смежные вопросы