RSpec:如何创建一个帮助存根方法?

时间:2014-07-28 18:29:53

标签: ruby-on-rails rspec

我正试图从我的助手那里找到一个帮助方法:

# 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

我尝试存根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

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

我是否有点想要配置存根方法的东西?

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

any_instance应该做你想做的事:

SessionsHelper.any_instance.stub(:current_user?).and_return(true)

正如@Vimsha所说,你在模块和实例之间感到困惑,这很容易做到。