컨트롤러에서 몇 가지 사항을 수정하고 rspec을 사용하여 테스트하고 싶습니다. Spree::ProductsController
에 대해 new
작업을 만들고 싶습니다. 이 사람이 다음 오른쪽 방향으로 날 밀어 수있는이 좋은 거라고하면 내가 만능 컨트롤러 데코레이터 테스트를 작성하는 방법은 무엇입니까?
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