RSpec:如何创建辅助存根方法?

Kin*_*arō 6 rspec ruby-on-rails

我正在尝试从我的助手中存根一个助手方法:

# sessions_helper.rb
require 'rest_client'

module SessionsHelper
  BASE_URL = "http://localhost:1234"

  def current_user?(token)
    sessions_url = BASE_URL + "/sessions"
    headers = {"X-AuthToken" => 12345}

    begin
      RestClient.get(sessions_url, headers)
      return true
    rescue RestClient::BadRequest
      return false
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

我尝试存根 current_user?在我的单元测试中始终返回 true:

require 'spec_helper'

describe SessionsHelper do
  it "Should not get current user with random token" do
    SessionsHelper.stub(:current_user?).and_return(true)
    expect(current_user?(12345)).to eq(false)
  end
end
Run Code Online (Sandbox Code Playgroud)

但测试仍然通过(我希望它返回 true)。

我是否错过了配置存根方法的某些内容?

谢谢

ush*_*sha 0

您没有在 上调用该方法SessionsHelper。你正在调用它self。因此,请尝试将该方法存根于自身。

describe SessionsHelper do
  it "Should not get current user with random token" do
    stub(:current_user?).and_return(true)
    expect(current_user?(12345)).to eq(false)
  end
end
Run Code Online (Sandbox Code Playgroud)