Ruby RSpec-如何测试包含HTTParty的类
我有这样一个代码:Ruby RSpec-如何测试包含HTTParty的类,ruby,rspec,httparty,Ruby,Rspec,Httparty,我有这样一个代码: 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: tok
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
但它不能正常工作。如何修复它?将您的
主题更改为以下内容:
subject { described_class.token }
将您的主题更改为以下内容:
subject { described_class.token }
或者忘记使用subject
并直接内联它:期望{Project::FooBar.token}。要引发_错误(Project::MissingToken)
。是的,@AndyWaite说了什么,但是我个人仍然会使用descripted\u class
,而不是Project::Foobar
。或者忘记使用subject
,直接内联:expect{Project::Foobar.token}。来引发错误(Project::MissingToken)
。是的,@AndyWaite说,但我个人仍然会使用descripted\u class
而不是Project::Foobar
。