Тестване на отменено действие на Spree Controller Decorator

Имам проблеми с тестването на отменено действие на Spree Controller Decorator, което изглежда така:

app/controllers/spree/checkout_controller_decorator.rb

Spree::CheckoutController.class_eval do
  def update
     do_something
     redirect_to my_other_path
  end
end

Спецификацията, която имам е:

spec/controllers/spree/checkout_controller_spec.rb

describe Spree::CheckoutController do
  routes { Spree::Core::Engine.routes }

  it "does something" do
    put :update
  end
end

но никога не попада в дефиницията ми за актуализация, стига до оригиналната дефиниция на Spree.


person user1502038    schedule 21.05.2014    source източник


Отговори (1)


Опитах се да възпроизведа горепосочения проблем. Сблъсках се със същия проблем. Но след като погледнах в тестовите дневници, за мен беше оплакване

Filter chain halted as :ensure_checkout_allowed rendered or redirected

Поради което отменения контролер никога не е бил изпълнен. Той се провали дори преди да достигне отменения метод.

Ето как изглежда моят файл със спецификации: spec/controllers/checkout_controller_spec.rb

require "spec_helper"

describe Spree::CheckoutController do
  let(:order) {FactoryGirl.create(:spree_order)}

  before(:each) do
    @routes = Spree::Core::Engine.routes
    controller.stub :check_authorization => true
    controller.stub :ensure_checkout_allowed => true
    controller.stub :ensure_valid_state => true
    controller.stub :current_order => order
  end

  it "does something" do
    user = create(:spree_user)
    user.spree_roles.create(:name => "admin")
    sign_in(user)

    puts @routes.inspect
    spree_put :update, :order => {}
    assigns(:test_obj).should eql(1)
  end
end

Ето как изглежда моят заменен файл с контролер: /app/controller/spree/checkout_controller_decorator.rb

Spree::CheckoutController.class_eval do
  def update
    @test_obj = 1
    render :nothing => true
  end
end

Може да се наложи да закъсате малко before_filters или да напишете някакъв код, за да направите before_filters проход

person ernest    schedule 04.07.2014