假设我有一些正确结构化的元代码,如下所示:
我可以调用类似
假设我有一些正确结构化的元代码,如下所示:
class Administrator < ParseInterface
attr_accessor :args, :new_student
include GeneralHelper
def initialize args = {}
@args = args
@new_student = build_student
end
end
class ParseInterface
PARSE_METHOD_PREFIX = /\A(parse_){1}/
def self.method_missing method_name, args = nil
parse_method?(method_name) ? call_parse(method_name, args) : super
end
def self.parse_method? method_name
method_name.to_s.match(PARSE_METHOD_PREFIX) ? true : false
end
def self.to_parse method_name
(remove_parse_prefix(method_name)).camelize(:lower)
end
def self.remove_parse_prefix method_name
method_name.to_s.gsub(PARSE_METHOD_PREFIX, "")
end
def self.call_parse method_name, args
set_session_token args
begin
Parse::Cloud::Function.new(to_parse(method_name)).call(args)
rescue Exception => e
NewRelic::Agent.agent.error_collector.notice_error(e)
end
end
end
我可以调用类似
Administrator.parse_do_stuff
的内容,然后解析接口类会注意到前缀parse,随后调用解析api。我希望能够存根一些这些动态生成的方法,特别是,我希望能够...
allow(Administrator).to receive(:parse_rooms_for_user).and_return([{objectId: @room.parse_pointer }])
但是rspec抛出了一个未实现的错误。我看过一篇非常好的博客文章http://blog.enriquez.me/2010/2/21/dont-forget-about-respond-to-when-implementing-method-missing/,似乎接近解决这个问题,但我对解决方案不清楚。因此,在Ruby中如何存根动态生成的类方法?感谢,JD
respond_to_missing?
被添加以支持的原因。 - Jörg W Mittag