Я хотел бы изменить некоторые вещи в контроллере и протестировать их с помощью rspec. Я хочу создать new
действие для Spree::ProductsController
. Это то, что я пыталсяКак написать тесты для декоратора контроллера spree?
routes.rb
resources :products
prodcuts_controller_decorator.rb
Spree::ProductsController.class_eval do
before_filter :authenticate_spree_user!, :except => [:show, :index]
def new
@product = current_user.products.build
end
end
products_controller_spec.rb
require 'spec_helper'
describe Spree::ProductsController do
let(:user) {create(:user)}
before(:each) do
Spree::Core::Engine.routes
BigPlanet::Application.routes
controller.stub :spree_current_user => user
end
it "render new template" do
get :new
response.should render_template(:new)
end
end
end
Но его использование оригинального Spree::Controller
и дает
Failure/Error: get :new
ActionController::RoutingError:
No route matches {:controller=>"spree/products", :action=>"new"}
Если кто-нибудь может засунуть меня в правильном направлении, то это было бы здорово.
Жаль, что это уже было 'Spree :: ProductsController', исправлено, но ошибка сохраняется – benchwarmer
Я отредактировал ответ с помощью дополнительного шага, который вы можете использовать. Мы используем это в нескольких приложениях Spree для тестирования декораторов с помощью rspec. – gmacdougall
Добавлены маршруты, как было предложено .. все же он не идентифицирует маршруты – benchwarmer