Minitest嘲笑Sinatra应用程序
问题描述:
我有从Sinatra::Base
类继承的Sinatra应用程序。在这个应用程序中,我有一个辅助方法,我在过滤器中使用。如何在使用minitest模拟库的测试中模拟这种方法?Minitest嘲笑Sinatra应用程序
before do
unless valid_signature?
halt 401
end
end
答
为了valid_signature?
成为屈辅助方法,它需要一个模块的一部分。因此,假如你的模块是MyModule
module MyModule
def valid_signature?
end
end
我们可以使用如下MINITEST嘲笑valid_signature?
:
MyModule.stub :valid_signature?, "stub return value" do
# method is stubbed only in this block, so run tests from here
# make sure your module was defined before you stub it.
end
如果从内部的块太大限制运行测试,我建议看Mocha stubbing and mock library或者干脆手动在测试文件中自己重新定义方法:
MyModule
def valid_signature?
# you can only redefine after class has already been defined.
"stub return value"
end
end
可悲的是,它没有工作。我得到“未定义的方法'valid_signature?for MyModule”错误。切换到摩卡不是我认为的选择 - 这个项目已经使用minitest进行了很多测试。 – Sebastian
你确定用实际的模块名称替换了MyModule吗?您还需要确保首先需要您的模块。 –