我有一个要测试的控制器操作:
LOG = ApiRequest::Resource::Login
def create
@response = LOG.new(current_user, params: params).create
return if request_failed?
...
end
def request_failed?
if @response.is_a? Hash
false
else
error = @response
redirect_to new_login_path, alert: error
true
end
endLOG.new(current_user, params: params).create是一个外部应用程序接口调用,它通常返回一个哈希或带有错误的字符串。我想在不触发调用的情况下测试控制器的操作,比如强制@response = {},检查它是否没有重定向,并强制@response = "",这应该会触发重定向。
it 'redirects if fails the request' do
post :create
expect(response).to redirect_to new_login_path
expect(flash[:alert]).not_to be nil
end如何将实例变量存根?
发布于 2017-07-30 09:47:42
我将使用存根LOG实例来测试它,如下所示:
let(:log_instance) { instance_double(LOG) }
before do
allow(LOG).to receive(:new).and_return(log_instance)
allow(log_instance).to receive(:create).and_return({})
endhttps://stackoverflow.com/questions/45395584
复制相似问题