没有关于法拉第测试的文档。 我工作的地方 引入了 Ruby on Rails,因为它很酷。 很少考虑测试红色案例。 我想贡献一些文档来帮助其他人
usage
谢谢你提出这个问题。 作为回应,我发布了一个 PR,包括使用法拉第测试适配器的实时测试/单元和 rspec 示例:#1000。 这是测试法拉第的推荐方法,而不是外部测试双库(rspec、mocha、webmock 等)。
我从未注意到它是否在测试诸如超时、连接错误等内容。该主题是否令人不悦,或者只是 PR #998 使用的方式。
我想我没有得到语法
我想我没有得到语法
Oof,也许我应该再次重温法拉第测试文档:/
#1000 中的语法使用Faraday::Adapter::Test::Stubs
实例,一个独占的存根对象来测试法拉第请求/响应周期。 您可以使用它在特定测试中设置对 http 请求的模拟响应。
it 'parses name' do
# this block yields a rack response: an array with:
# response status, http header hash, and response body
stubs.get('/ebi') do |env|
[
200,
{ 'Content-Type': 'application/javascript' },
'{"name": "shrimp"}'
]
end
expect(client.sushi('ebi')).to eq('shrimp')
stubs.verify_stubbed_calls
end
很抱歉,我显然没有足够彻底地阅读您的问题。 我完全错过了您特别想测试异常的情况。 像这样的测试也有效(我将添加到 #1000):
it 'handles exception' do
stubs.get('/ebi') do
raise Faraday::ConnectionFailed, nil
end
expect { client.sushi('ebi') }.to raise_error(Faraday::ConnectionFailed)
stubs.verify_stubbed_calls
end
我更喜欢像这样的特定测试替身实现而不是更通用的模拟方法,因为它们仍然贯穿整个法拉第请求工作流程。 如果开发人员无论如何都想使用 RSpec 模拟,那么优秀的 RSpec 文档会更好地为他们服务。
与#1000 一起交付
最有用的评论
谢谢你提出这个问题。 作为回应,我发布了一个 PR,包括使用法拉第测试适配器的实时测试/单元和 rspec 示例:#1000。 这是测试法拉第的推荐方法,而不是外部测试双库(rspec、mocha、webmock 等)。