【发布时间】:2018-02-11 17:42:01
【问题描述】:
考虑以下
class Foo
def bar
1
end
end
然后是两个 rake 任务 ...
task :something
InvokeSomething(Foo.new)
end
task :test
do_some_testing
end
def do_some_testing
setup_test
`rake something`
check_if_it_did_everything_correctly
end
执行setup_test后,我想将class Foo的源代码修改为return 2方法bar。
想法:
创建一个 rake 任务,在我定义 rake 任务
something之前调用它并直接修改源代码。这样something是用不同的源代码定义的。以某种方式修改 Rake 任务,以便覆盖该特定方法。至少我需要在运行时引用 rake 任务。
【问题讨论】:
-
这个轮子是多年前发明的:你应该
mock原来的方法返回2。 -
@mudasobwa 注意到我调用了 rake 任务,方法是对其进行脱壳。我没有参考它。在完全重新设计测试之前,我无法模拟。