【发布时间】:2013-10-17 13:36:41
【问题描述】:
我来自 Ruby 背景,正在尝试测试一个 Javascript 库,该库与检索到 JSON api 端点的对象交互。
如何在 Javascript 中重新创建以下 Ruby?
class ArbitraryMock
def initialize(property_hash)
@property_hash = property_hash
end
def method_missing(*args)
@property_hash[args.first] || ''
end
end
编辑:method_missing 是一种动态方法,只要方法不存在就会被调用。此方法的默认版本会引发 NoMethodError(我相信 Javascript 会返回 undefined)。通过以上述方式覆盖该方法,它允许您执行以下操作:
some_object = ArbitraryMock.new(foo: 'bar')
some_object.foo
=> 'bar'
some_object.bang
=> ''
【问题讨论】:
-
method_missing 是做什么的?在这种情况下,它是用于返回属性的值还是空字符串?如果正确的话,你也许可以用 getter/setter 做一些事情。
-
请查看我的问题的编辑版本。
-
我已经更新了我的答案。我希望它有一些用处。
标签: javascript ruby mocking