【发布时间】:2018-03-18 16:27:23
【问题描述】:
我有一个规格和一个工厂,但我收到了这个错误:
SystemStackError: stack level too deep
from gems/activerecord-4.2.1/lib/active_record/relation/delegation.rb:9:in `relation_delegate_class'
当我尝试使用动词“构建”时,它会起作用;但我需要将它保存到测试数据中,并且“创建”在let!(:user) { create(:user) } 中不起作用,因为它会引发该错误。 Rspec 似乎工作正常。
我正在运行 ruby 2.2.2;使用 rspec 和工厂女孩
require 'spec_helper'
describe API::V1::CurrentUserController do
let!(:user) { create(:user) }
setup_api_authorization
describe "GET 'show'" do
before (:each) do
setup_api_headers
get 'show', subdomain: 'api', id: 'me'
end
end
FactoryGirl.define do
factory :user, aliases: [:participant] do
sequence(:email) { |n| "user#{n}@example.com" }
first_name { Faker::Name.first_name }
last_name { Faker::Name.last_name }
password 'testpass'
password_confirmation { |user| user.password }
role_id {4}
end
end
【问题讨论】:
-
请出示您的
User型号。里面有没有回调,比如after_create、after_commit等? -
规范用户模型或应用程序一
-
模型来自
app/models。 -
好吧,我确实有 3 个 after_create、3 个 before_create 和 1 个 after_save。我无法在此处发布整个模型,这些回调如何导致 rspec/factorygirl 出现问题?
-
如果您正在这样做,您不应该这样做。您可以在此处发布回调以获得更好的反馈。
标签: ruby-on-rails ruby rspec factory-bot