rspec中的堆栈级别太深

时间:2016-10-25 03:28:44

标签: ruby-on-rails ruby ruby-on-rails-4 rspec

当我尝试在规范上执行以下代码时,它会给我stack level too deep。在控制台中正常工作。

def order_fulfillments_without_receipts
      @order_fulfillments_without_receipts = []
      OrderReconciliation.includes(:order_fulfillment).
        where(data_entry_status: OrderReconciliation.data_entry_statuses[:pending_entry]).
        find_in_batches do |group|
          group.select do |reconciliation|
            select_reconciliation?(reconciliation)
          end
        end
      @order_fulfillments_without_receipts
    end

    def select_reconciliation?(reconciliation)
      order_fulfillment = reconciliation.order_fulfillment
      receipt_urls_empty = order_fulfillment.get_receipt_urls.empty?
      order_fulfillment_id = order_fulfillment.id
      @order_fulfillments_without_receipts << order_fulfillment_id
      receipt_urls_empty || order_fulfillments_without_receipts.include?(order_fulfillment_id)
    end
  end

我应该如何修复以避免stack level too deep

1 个答案:

答案 0 :(得分:1)

您的代码中有一个错误,select_reconciliation?方法的最后一行|| order_fulfillments_without_receipts但我认为您的意思是@order_fulfillments_without_receipts

如果没有@你正在调用order_fulfillments_without_receipts方法,那么就是无限循环。

为什么在您的测试中而不是在您的控制台中发生这种情况必须与receipt_urls_empty在每种情况下的情况相关,在您的测试中false以及在您的控制台中#&} { 39; s true