簡體   English   中英

RSpec-Rails-將控制器變量存根

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM