我已经习惯了RSpec,你可以使用evalueted lazily的块来存储方法实现。
现在我正在处理一个项目的拉取请求,该项目使用Test :: Unit和mocha作为模拟库。
我需要能够执行类似于rspec示例的操作,即用依赖于对象状态的动态替换方法实现,因此我不能使用mocha #returns
方法提供的静态调用。 / p>
有什么方法可以使用mocha获得相同的功能,我还无法找到相关的任何文档吗?
我需要实现与此类似的东西(RSpec 2.14语法)
class SomeController < ApplicationController
before_filter :authenticate
def authenticate
# original method I need to replace
end
def some_other_method
:bar
end
end
describe SomeController do
before do
controller.stub :authenticate do
redirect_to root_path if some_other_method == :foo
end
end
it 'should test something' do
controller.stub(some_other_method: :foo)
get :index
response.should redirect_to root_path
end
it 'should test something else' do
get :index
response.should be_successful
end
end
答案 0 :(得分:2)
您是否只能在def
个实例上使用controller
?
def controller.some_other_method
:foo
end