Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 非活动记录模型的机械师_Ruby On Rails_Ruby_Unit Testing_Mocking_Machinist - Fatal编程技术网

Ruby on rails 非活动记录模型的机械师

Ruby on rails 非活动记录模型的机械师,ruby-on-rails,ruby,unit-testing,mocking,machinist,Ruby On Rails,Ruby,Unit Testing,Mocking,Machinist,是否可以使用机械师为非activerecord模型创建蓝图?无论我尝试什么,似乎都会产生错误 如果这是不可能的机械师,有没有其他夹具生成宝石可以做到这一点?我还读到《工厂女孩》对此有问题。我对《机械师2 beta 1》做了一些调查,它似乎支持普通的ruby对象。以下是我为让它工作所做的。很高兴了解到任何更简单的解决方案 require 'rubygems' require 'machinist' require 'faker' class YourObject attr_accessor :

是否可以使用机械师为非activerecord模型创建蓝图?无论我尝试什么,似乎都会产生错误


如果这是不可能的机械师,有没有其他夹具生成宝石可以做到这一点?我还读到《工厂女孩》对此有问题。

我对《机械师2 beta 1》做了一些调查,它似乎支持普通的ruby对象。以下是我为让它工作所做的。很高兴了解到任何更简单的解决方案

require 'rubygems'
require 'machinist'
require 'faker'

class YourObject
 attr_accessor :field1, :field2
end


# For all Objects
class Object
 extend Machinist::Machinable

 def self.blueprint_class
   Machinist::Blueprint
 end
end   

# Or just one object
YourObject.send(:extend, Machinist::Machinable)
YourObject.class_eval do
 def self.blueprint_class
   Machinist::Blueprint
 end
end



YourObject.blueprint do
 field1 { rand(1000) }
 field2 { Faker::Name }
end

obj = YourObject.make

如果有人好奇的话,FactoryGirl和POROs的一个问题(可能还有其他问题)是它不能处理带参数的构造函数。您可以根据答案进行适当的修改。

如果您能提供重现问题的最简单示例,可能会有所帮助。还有,“非活动记录模型”是什么意思?使用ActiveModel的东西,或者使用普通的Ruby对象的东西?我只是指一个不与ActiveRecord/ActiveModel绑定的模型,但是是的,你可以说我正在寻找一种方法来为任何常规Ruby类使用Machinist蓝图。我知道我可以使用OpenStruct来创建自己的工厂方法,但我真的很喜欢Machinist的语法,如果我能将所有内容都放在Machinist的blueprint.rb文件下,那就太好了。