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 
+0

可悲的是,它没有工作。我得到“未定义的方法'valid_signature?for MyModule”错误。切换到摩卡不是我认为的选择 - 这个项目已经使用minitest进行了很多测试。 – Sebastian

+0

你确定用实际的模块名称替换了MyModule吗?您还需要确保首先需要您的模块。 –