如何使用FactoryGirl创建一个在初始化中获取引用的工厂?

时间:2016-08-10 22:33:58

标签: ruby factory-bot factory

我正在寻找将以下内容转换为工厂的方法:

ListView

申请工厂:

else

应用程序属性client = Client.new(application.uid, application.secret, site:'http://localhost:3000', raise_errors:false) FactoryGirl.define do factory :application do name 'Test application' redirect_uri 'http://another-site.com/redirect' end end 未在工厂中定义,而是在创建时定义。

以下内容不起作用(uid):

secret

1 个答案:

答案 0 :(得分:1)

我想我错过了解你的问题,但这段代码运行正常。可能是因为我已根据最大辩护人的评论向工厂提供application

<强> client.rb

require 'factory_girl'

class Application
        attr_accessor :uid
        attr_accessor :secret
end

class Client
        attr_accessor :uid
        attr_accessor :secret
        attr_accessor :extended

        def initialize (uid, secret, extended)
                @uid = uid
                @secret = secret
                @extended = extended
        end
end

application = Application.new
application.uid = 123
application.secret = "secret"    

FactoryGirl.define do
  factory :application do
    name         'Test application'
    redirect_uri 'http://another-site.com/redirect'
  end
end

FactoryGirl.define do
  factory :client do
    site         'http://localhost:3000'
    raise_errors  false

    initialize_with{new(application.uid, application.secret, attributes)}
  end
end

代码在ruby client.rb

的控制台上正常运行