strict_mode
μ Faraday::Adapter::Test::Stubs
, λλ λͺ¨λμ λν λ λ§μ κΈ°λ₯μ μνλ : μ§μ Faraday::FlatParamsEncoder
. μλ₯Ό λ€μ΄ λμΌν 쿼리 맀κ°λ³μ a
νμ¬ HTTP μμ²μ μ¬λ¬ λ² νΈμΆνλ €λ κ²½μ° ν
μ€νΈ μ€ν
μμ κ°μ΄ λ€λ₯Έ λμΌν 맀κ°λ³μκ° λͺ¨λ μ¬λ°λ₯΄κ² μ λ¬λμλμ§ νμΈν΄μΌ ν©λλ€.class Client
def initialize(conn)
<strong i="10">@conn</strong> = conn
end
def sushi(jname, params: {})
res = @conn.get("/#{jname}", params)
data = JSON.parse(res.body)
data['name']
end
end
RSpec.describe Client do
let(:stubs) { Faraday::Adapter::Test::Stubs.new(strict_mode: true) }
let(:conn) { Faraday.new(request: { params_encoder: Faraday::FlatParamsEncoder }) { |b| b.adapter(:test, stubs) } }
let(:client) { Client.new(conn) }
it 'handles the same multiple URL parameters' do
# The same parameter `a` is expected to appear multiple times with different values.
stubs.get('/ebi?a=x&a=y&a=z') { [200, { 'Content-Type' => 'application/json' }, '{"name": "shrimp"}'] }
# Test should pass
expect(client.sushi('ebi', params: { a: %w[x y z] })).to eq('shrimp')
# Test should not pass due to the lack of "x" and "y" for `a`
# expect(client.sushi('ebi', params: { a: %w[z] })).to eq('shrimp')
stubs.verify_stubbed_calls
end
end
μ΄λ»κ² μκ°νλμ? μλ―Έκ° μλ€λ©΄ ν 리νμ€νΈλ₯Ό μ΄κ³ μΆμ΅λλ€.
μλ
νμΈμ @yykamei , μμ λ΄μ©μ΄ μ΄ν΄κ° λ©λλ€. PRμ νμν©λλ€.
νΈκΈ°μ¬μμ νμ¬ μμ ν
μ€νΈμμ μ΄λ€ μΌμ΄ λ°μν©λκΉ? λ§μ§λ§μ μ§λκ°λμ?
λν main
λΆκΈ°κ° μ΄μ 곧 μΆμλ v2.0 릴리μ€λ₯Ό κ°λ¦¬ν€κ³ μμμ κΈ°μ΅νμμμ€.
1.x 릴리μ€μμλ μ΄κ²μ μνλ©΄ 1.x
λΆκΈ°λ₯Ό λΆκΈ°ν΄μΌ ν©λλ€. π
μλ νμΈμ @iMacTia , λ΅λ³ κ°μ¬ν©λλ€.
νΈκΈ°μ¬μμ νμ¬ μμ ν μ€νΈμμ μ΄λ€ μΌμ΄ λ°μν©λκΉ? λ§μ§λ§μ μ§λκ°λμ?
μ, μ΅μ 1.x
λΈλμΉλ₯Ό ν΅κ³Όνμ§ λͺ»ν κ² κ°μ΅λλ€. Stub#params
κ° Faraday::Utils.parse_nested_query
ꡬμ±λμκΈ° λλ¬Έμ΄λΌκ³ μκ°ν©λλ€. μ΄μ 쿼리 맀κ°λ³μλ₯Ό μ¬μ μνλ κ²μ²λΌ 보μ
λλ€.
Randomized with seed 45661
Client
handles the same multiple URL parameters (FAILED - 1)
Failures:
1) Client handles the same multiple URL parameters
Failure/Error:
raise Stubs::NotFound, "no stubbed request for #{env[:method]} "\
"#{normalized_path} #{env[:body]}"
Faraday::Adapter::Test::Stubs::NotFound:
no stubbed request for get /ebi?a=x
# ./lib/faraday/adapter/test.rb:253:in `call'
# ./lib/faraday/rack_builder.rb:154:in `build_response'
# ./lib/faraday/connection.rb:511:in `run_request'
# ./lib/faraday/connection.rb:200:in `get'
# ./ok.rb:11:in `sushi'
# ./ok.rb:30:in `block (2 levels) in <top (required)>'
Finished in 0.00391 seconds (files took 0.78136 seconds to load)
1 example, 1 failure
Failed examples:
νμ§λ§ μ΄λ κ² μ½λλ₯Ό λ³κ²½νλ©΄ ν μ€νΈλ ν΅κ³Όν©λλ€. λ¬Έμ μ€λͺ μ λ€μ μμ±νμ΅λλ€.
diff --git a/a.rb b/a.rb
index c4b7084..91d795d 100644
--- a/a.rb
+++ b/a.rb
@@ -27,7 +27,7 @@ RSpec.describe Client do
expect(client.sushi('ebi', params: { a: %w[x y z] })).to eq('shrimp')
# Test should not pass due to the lack of "y" and "z" for `a`
- expect(client.sushi('ebi', params: { a: %w[x] })).to eq('shrimp')
+ expect(client.sushi('ebi', params: { a: %w[z] })).to eq('shrimp')
stubs.verify_stubbed_calls
end
end
μ΄μ¨λ κ°μ¬ν©λλ€. πͺ μ½κ°μ μμ μ κ°ν©λλ€.
μ΄ λ¬Έμ λ #1316μΌλ‘ ν΄κ²°λμμ΅λλ€.
κ°μ¬ν©λλ€!
κ°μ₯ μ μ©ν λκΈ
λν
main
λΆκΈ°κ° μ΄μ 곧 μΆμλ v2.0 릴리μ€λ₯Ό κ°λ¦¬ν€κ³ μμμ κΈ°μ΅νμμμ€.1.x 릴리μ€μμλ μ΄κ²μ μνλ©΄
1.x
λΆκΈ°λ₯Ό λΆκΈ°ν΄μΌ ν©λλ€. π