[英]RSpec-Rails - stub a controller variable
我有一個控制器動作要測試:
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
end
LOG.new(current_user, params: params).create
是一個外部api調用,通常返回帶有錯誤的哈希值或字符串。 我想在不觸發調用的情況下測試控制器動作,例如force @response = {}
並檢查它是否不重定向,而force @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
您如何存根實例變量?
我將使用存根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({})
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.