我正在编写一些类似于
的现有Ruby代码的测试module Foo
module Bar
private
def function_i_want_to_test (a, b)
if controller.is_something? a, b
puts a
else
puts b
end
end
end
end
变量controller
从其他地方神奇地插入到函数中。要从我的测试中访问此函数,我可以在我的测试类中执行include Foo::Bar
并在之后正常调用该函数。不幸的是,由于未设置controller
,因此无效。我有什么想法可以从我的测试中设置controller
变量吗?
答案 0 :(得分:1)
模块似乎假设“控制器”在它所包含的类/模块中可用。也许它包含在Rails ActionController类中?此外,它可能意味着是方法调用,而不是局部变量。所以,做这样的事情:
class MyClass
include Foo::Bar
def controller
# Do stuff.
end
end
对于测试,您还可以使用Mocha(或其他模拟库)来简化该过程。
def test_my_thing
thing = Object.new
thing.extend(Foo::Bar)
thing.expects(:controller).returns("whatever")
end