如何从gem中的Rails引擎测试Rails控制器

时间:2017-05-29 00:30:30

标签: ruby-on-rails rspec

我有一个来自gem中引擎的rails控制器,其方法是OrdersController #populate。我正在使用像这样的after_action更改类,以便用户在购物车中只能有一个订单项。

module Spree
  module Controllers
    module Orders
      module SingleSubscriptionAddDecorator
        def cart_path
          checkout_state_path(@order.checkout_steps.first)
        end

        def self.prepended(base)
          base.after_action(
            :ensure_one_in_cart,
            only: :populate
          )
        end

        private
        def ensure_one_in_cart
          if @order.line_items.length > 1
            @order.line_items[1..-1].each { |li| li.delete }
          end
          @order.line_items.first.update_attribute(:quantity, 1) if @order.line_items.first.quantity > 1
        end
      end
    end
  end
end

Spree::OrdersController.prepend(Spree::Controllers::Orders::SingleSubscriptionAddDecorator)

我想在此控制器行为中添加rspec,但无法从我的rspec中访问gems路由。我该如何测试这种行为?

感谢!

0 个答案:

没有答案