【发布时间】:2015-05-12 22:16:55
【问题描述】:
我正在使用 rspec 进行测试,虽然我不是在寻找完整的答案,但更多的是一种伪代码方法让我继续前进 - 我不确定如何为以下课程编写测试。
module AisisWriter
class ClassFactory
class << self
undef_method :new
attr_accessor :registered_objects
def register(class_name, klass, params = nil)
if !params.is_a(Array)
raise ArgumentError, "params must be an array"
end
registered_object[class_name] = {:class_name => klass, :params => !params.nil? ? params.flatten : nil}
end
def create(class_name, params = nil)
if !params.is_a(Array)
raise ArgumentError, "params must be an array"
end
klass = registered_object[class_name]
if !params.nil
klass[:class_name].new(params.flatten)
else
flass[:class_name].new(*klass[:params])
end
end
end
end
end
我在 Rails 中编写这个类,以便我注册常用的类并能够快速创建它们。这个概念来自my question on reflection in ruby。
我不确定如何测试有两件事。一个我必须确保您注册的课程确实已注册。如果您尝试创建其实际创建的类的实例,则有两个。
我可以编写一个get_registered_objects 函数来帮助处理第一个函数并将其与现有对象进行比较或遍历它以查找特定属性。
但是第二部分,你如何测试一个类被实例化了?
【问题讨论】:
标签: ruby-on-rails ruby rspec metaprogramming