Faraday๋ฅผ ์ฌ์ฉํ ํ ์คํธ์ ๋ํ ๋ฌธ์๋ ์์ต๋๋ค. ๋ด๊ฐ ์ผํ๋ ๊ณณ์์ Ruby on Rails๋ ๋ฉ์ง๊ธฐ ๋๋ฌธ์ ์๊ฐ๋์์ต๋๋ค. ๋นจ๊ฐ์ ์ผ์ด์ค ํ ์คํธ์ ๋ํด์๋ ๊ฑฐ์ ๊ณ ๋ คํ์ง ์์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ๋๊ธฐ ์ํด ๋ช ๊ฐ์ง ๋ฌธ์๋ฅผ ์ ๊ณตํ๊ณ ์ถ์ต๋๋ค.
usage
ํด๋ฆญ์ฌ๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ํ ์๋ต์ผ๋ก ๋ผ์ด๋ธ ํ ์คํธ/์ ๋ ๋ฐ ํจ๋ฌ๋ฐ์ด ํ ์คํธ ์ด๋ํฐ ์ฌ์ฉ์ ๋ํ rspec ์์ ๋ฅผ ํฌํจํ๋ PR์ ๊ฒ์ํ์ต๋๋ค: #1000. ์ด๊ฒ์ ์ธ๋ถ ํ ์คํธ ์ด์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ(rspec, mocha, webmock ๋ฑ) ๋์ Faraday๋ฅผ ํ ์คํธํ๋ ๋ฐ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์๊ฐ ์ด๊ณผ, ์ฐ๊ฒฐ ์ค๋ฅ ๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ ํ ์คํธํ๊ณ ์๋ค๋ ์ ์ ์ ํ ๋์น์ฑ์ง ๋ชปํ์ต๋๋ค. ์ฃผ์ ๊ฐ ์ฐก๊ทธ๋ฆฐ ๊ฒ์ ๋๊น, ์๋๋ฉด PR #998์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๊น?
๋๋ ๊ตฌ๋ฌธ์ ์ป์ง ๋ชปํ๋ค๊ณ ๊ฐ์ ํ๋ค.
๋๋ ๊ตฌ๋ฌธ์ ์ป์ง ๋ชปํ๋ค๊ณ ๊ฐ์ ํ๋ค.
Oof, ์๋ง๋ Faraday ํ ์คํธ ๋ฌธ์๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํด์ผ ํ ๊ฒ์ ๋๋ค./
#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๊ณผ ํจ๊ป ์ ๊ณต
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ํ ์๋ต์ผ๋ก ๋ผ์ด๋ธ ํ ์คํธ/์ ๋ ๋ฐ ํจ๋ฌ๋ฐ์ด ํ ์คํธ ์ด๋ํฐ ์ฌ์ฉ์ ๋ํ rspec ์์ ๋ฅผ ํฌํจํ๋ PR์ ๊ฒ์ํ์ต๋๋ค: #1000. ์ด๊ฒ์ ์ธ๋ถ ํ ์คํธ ์ด์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ(rspec, mocha, webmock ๋ฑ) ๋์ Faraday๋ฅผ ํ ์คํธํ๋ ๋ฐ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.