我有一个看起来像这样的模型:
class Gist
def self.create(options)
post_response = Faraday.post do |request|
request.url 'https://api.github.com/gists'
request.headers['Authorization'] = "Basic " + Base64.encode64("#{GITHUB_USERNAME}:#{GITHUB_PASSWORD}")
request.body = options.to_json
end
end
end
和一个看起来像这样的测试:
require 'spec_helper'
describe Gist do
context '.create' do
it 'POSTs a new Gist to the user\'s account' do
Faraday.should_receive(:post)
Gist.create({:public => 'true',
:description => 'a test gist',
'files' => {'test_file.rb' => 'puts "hello world!"'}})
end
end
end
不过,这个测试并不能真正让我满意,因为我正在测试的是我正在使用 Faraday 进行一些 POST,但我实际上无法测试 URL、标头或正文,因为它们是通过一个块。我尝试使用 Faraday 测试适配器,但我也没有看到任何测试 URL、标头或正文的方法。
有没有更好的方法来编写我的 Rspec 存根?或者我是否能够以某种我无法理解的方式使用法拉第测试适配器?
谢谢!