【问题标题】:RSpec - how to test a class including HTTPartyRSpec - 如何测试一个包含 HTTParty 的类
【发布时间】:2015-05-01 08:39:29
【问题描述】:

我有这样的代码:

class FooBar
  include HTTParty

  def self.token
    fail Project::MissingToken unless Project::Config.key?("project_token")
    Project::Config.fetch("project_token")
  end

  base_uri "https://website.com/api"
  default_params token: token
end

现在我需要测试Project::Config 不包含密钥并引发异常的情况。我正在考虑类似的事情:

context "token is not given" do
  subject { Project::FooBar }

  it "should raise an error" do
    expect(Project::Config).to receive(:key?).with("project_token").and_return(false)
    expect { subject }.to raise_error(Project::MissingToken)
  end
end

但它不能正常工作。如何解决?

【问题讨论】:

    标签: ruby rspec httparty


    【解决方案1】:

    将您的 subject 更改为以下内容:

    subject { described_class.token }
    

    【讨论】:

    • 或者忘记使用 subject 并直接内联它:expect { Project::FooBar.token }.to raise_error(Project::MissingToken)
    • 是的,正如@AndyWaite 所说,但我个人仍会使用described_class 而不是Project::Foobar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多