我通过创建一个扩展到库类的子类来扩展现有的库。
在子类中,我能够测试 initialize
方法中的大部分功能,但无法模拟 super
调用。子类如下所示。
class Child < SomeLibrary
def initialize(arg)
validate_arg(arg)
do_something
super(arg)
end
def validate_arg(arg)
# do the validation
end
def do_something
@setup = true
end
end
如何编写 rspec 测试(使用 mocha)以便我可以模拟 super
调用?请注意,我正在测试 Child
类中的 initialize
方法的功能。当提供额外参数时,我是否必须创建不调用 super
的单独代码路径?
最佳答案
你不能模拟 super
,你也不应该。当您模拟某些内容时,您正在验证是否收到了特定消息,而 super
不是一条消息——它是一个关键字。
相反,弄清楚如果缺少 super
调用,该类的行为会发生什么变化,并编写一个示例来练习和验证该行为。
关于ruby - 如何使用 rspec 在 ruby 中模拟 super?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15856334/