【发布时间】:2014-03-29 19:25:32
【问题描述】:
对不起标题,我太沮丧了,现在想不出更好的东西。
我有一个类Judge,它有一个方法#stats。这个 stats 方法应该向 api 发送一个 GET 请求并获取一些数据作为响应。我正在尝试对此进行测试并存根 stats 方法,以便我不执行实际请求。这是我的测试的样子:
describe Judge do
describe '.stats' do
context 'when success' do
subject { Judge.stats }
it 'returns stats' do
allow(Faraday).to receive(:get).and_return('some data')
expect(subject.status).to eq 200
expect(subject).to be_success
end
end
end
end
这是我正在测试的课程:
class Judge
def self.stats
Faraday.get "some-domain-dot-com/stats"
end
end
目前这给了我错误:Faraday does not implement: get
那么你如何用法拉第存根呢?我见过这样的方法:
stubs = Faraday::Adapter::Test::Stubs.new do |stub|
stub.get('http://stats-api.com') { [200, {}, 'Lorem ipsum'] }
end
但我似乎无法以正确的方式应用它。我在这里错过了什么?
【问题讨论】:
-
Faraday 没有收到 :get,它返回的 Faraday::Connection 实例收到了。您需要存根 Faraday 以在收到 Faraday::Connection 时返回一个实例 double :new
标签: ruby testing request stubbing faraday