ν μ€νΈ μ€μ λ°©λ²μ λ°λΌ μΌλΆ ν μ€νΈλ 무μμ μ€μ λ°μ΄ν°, μ€ν μκ° λλ ν μ€νΈ 컨ν μ€νΈλ₯Ό ꡬμ±νλ κΈ°ν λ³μμ κ°μ νΉμ 컨ν μ€νΈμμλ§ μ€ν¨ν©λλ€. ν μ€νΈκ° μ€ν¨ν νΉμ 컨ν μ€νΈλ₯Ό 리λ²μ€ μμ§λμ΄λ§νλ κ²μ μ΄λ €μΈ μ μμ΅λλ€.
μ΄λ¬ν μν©μμλ λλ²κΉ λͺ©μ μΌλ‘ λμμ΄ λ κ²μ λλ€. 컨ν μ€νΈ λ³μμ κ°μ νμνλ λ¬Έμμ΄λ‘ μ€ν¨ λ©μμ§λ₯Ό μΆκ°νλ κΉλν λ°©λ² μ΄ μλ€λ©΄.
μ΄κ²μ μ²λ¦¬νλ ν κ°μ§ λ°©λ²μ μ¬μ©μ μ μλ μ€ν¨ λ©μμ§κ° μλ μ¬μ©μ μ μ 맀μ²λ₯Ό λ§λλ κ²μ΄λΌκ³ μκ°νμ§λ§ μ€ν¨ λ©μμ§μ μΆκ°ν μ μλ κ²μ΄ ν¨μ¬ λ λ©μ§ μ μμ΅λλ€. μ¬μ©μ μ μ λ©μμ§ μ μ μ¬νμ§λ§ κΈ°μ‘΄ μ€ν¨ λ©μμ§ λ₯Ό
μ΄κ²μ λΉμ·ν μλμ²λΌ 보μ λλ€: https://til.hashrocket.com/posts/a50b3d9313-append-an-rspec-failure-message
1) Colors::awesome_color starts with g
Failure/Error: expect(subject.awesome_color).to start_with 'g'
expected "red" to start with "g"
# ./spec/lib/colors.rb:22:in `block (5 levels) in <top (required)>'
1) Colors::awesome_color starts with g
Failure/Error: expect(subject.awesome_color).to start_with 'g'
expected "red" to start with "g"
Context:
Variable <strong i="23">@colors</strong> was 'red'. Date was '2019-04-10'
# ./spec/lib/colors.rb:22:in `block (5 levels) in <top (required)>'
:wave: μ¬μ©μ μ§μ μ€ν¨ λ©μμ§λ₯Ό μΆκ°νλ κΈ°λ₯μ΄ μ΄λ―Έ μ‘΄μ¬ν©λλ€.
μ
expect(subject.awesome_color).to(
start_with('g'),
"Expected colour to start with 'g' was #{subject.awesome_color}\n" \
"Context: <strong i="7">@colours</strong> #{@colours}, Date #{@date}"
)
νΉμ λ°μ΄ν°κ° 무μμΈμ§ μμ μ μ€μ ν μ μλ PRμ μ§μν κ²μ΄λΌκ³ μκ°ν©λλ€. κ²°κ΅ μ»¨ν μ€νΈλ₯Ό ν¬ν¨ν μ μλ μμ λ©νλ°μ΄ν°κ° μμ΅λλ€... κ·Έλ° λ€μ μ΄λ₯Ό μ§μνλλ‘ ν¬λ§·ν°λ₯Ό μμ νλ λ¬Έμ κ° λ κ²μ λλ€. ..
@JonRowe λ₯Ό λ€μ
μ, μ§κΈμ κ·Έ μ€νμΌμ μ¬μ©ν μ μμ΅λλ€! μ¬λ¬ ν
μ€νΈλ₯Ό μν΄ κ·Έλ κ²ν΄μΌν©λλ€. λΉμ μ΄ μ μν λλ‘ context
/ describe
μμ μ΄κ²μ μ§μνμ¬ λͺ¨λ κ²μ 건쑰μν€κ³ κΈ°μ‘΄ μ€ν¨ λ©μμ§λ₯Ό μ¬μ¬μ©νλ κ²μ΄ μ’μ κ²μ
λλ€. :-)
PR μ μΆμ κ³ λ €νλ κ²μ μΌλμ λκ² μ΅λλ€. μ λ rspec μ½λλ² μ΄μ€μ λν΄ μ μμ§ λͺ»νμ§λ§ PR μ μΆμ μλνλ€λ©΄ κ·ν λλ λ€λ₯Έ λκ΅°κ°κ° μ λ₯Ό λλ΅μ μΌλ‘ μ¬λ°λ₯Έ λ°©ν₯μΌλ‘ μλ΄νκ³ μ€νμΌμ λν΄ λ Όμν μ μμ΅λκΉ? κ³Όκ±°μλ λ€λ₯Έ μ½λ κΈ°λ°μμ κΈΈμ μμμ§λ§ rspecμ΄ ν¨μ¬ κΉ¨λνκ³ μΆλ‘ νκΈ° μ¬μΈ κ²μ΄λΌκ³ μκ°ν©λλ€.
λ€μ νλ² κ°μ¬ν©λλ€!
λ€, μ΄ν΄λ΄μΌ ν κ³³μ (μΆκ° μΆλ ₯μ μ²λ¦¬νκΈ° μν΄) μ°λ¦¬μ ν¬λ§·ν°μ λλ€. #2616μμ μ μν "컨ν μ€νΈ"λ₯Ό μΆμ νλ λ°©λ²μ κ³ λ €ν΄μΌ ν©λλ€. λ©λͺ¨νλμ΄ ν΄λΉ κ°μ μ¬μ©)
@gaganawhad μκ² μ΄ μ λλ©΄ μΆ©λΆ
after do |example|
instance_variables.reject { |v| v =~ /@__/ }.each { |v| puts "#{v}: #{instance_variable_get(v)}" }
end
λ©νλ°μ΄ν°λ₯Ό μ¬μ©νμ¬ ν¬ν¨νλ κ²μ΄ κ°λ₯ν©λλ€. μ:
after(:dump_ivars) do |example|
instance_variables.reject { |v| v =~ /@__/ }.each { |v| puts "#{v}: #{instance_variable_get(v)}" }
end
describe 'something', :dump_ivars do
...
end
λΆννλ after
νν¬μμ κΈ°λμΉλ₯Ό μ€μ ν μ μκ³ λ³κ²½ν μ μκΈ° λλ¬Έμ ν΄λΉ λ¨κ³μμ μμ κ° μμ§ μ€ν¨νλμ§ μ¬λΆλ₯Ό μμ§ μ΄ν΄ν μ μμ΅λλ€.
λλ λ¨μ§ aggregate_failures
λ₯Ό μνμ§λ§ λ¨ ν λ²μ μ€ν¨κ° μλλΌλ νμ± μνμ
λλ€.
it "parses all entries correctly" do
result = Parser.call(bar_owner)
result.each do |entry|
aggregate_failures("Entry #{entry.id}") do
expect(entry.name).to match(/\A[A-z][a-z]+\z/)
expect(entry.owner).to eq(bar_owner)
expect(entry.tags).to be_present
end
end
end
κ±°κΈ°μ λ κ°μ μ€λ₯κ° λ°μνλ©΄ λ©μ§ 컨ν
μ€νΈ( Entry 76: β¦
)λ₯Ό μ»μ μ μμ§λ§ κ·Έ μ€ νλλ₯Ό μμ νλ©΄ 컨ν
μ€νΈκ° λ€μ μ¬λΌμ§κ³ μΆκ° μΈμλ₯Ό μΆκ°νμ§ μκ³ λ μ΄ν΄νκΈ° λ§€μ° μ΄λ €μ΄ μ€λ₯λ‘ λμκ°λλ€. 루νμμ λͺ
λ Ήλ¬Έμ μ€ννκ³ λ€μ μ€νν©λλ€.
aggregate_failures
μ μ μ¬νκ² μλνκ³ μλνλ with_failure_context(extra_message) { β¦ }
λ©μλλ μ΄λ»μ΅λκΉ?
κ°μ₯ μ μ©ν λκΈ
λ€, μ΄ν΄λ΄μΌ ν κ³³μ (μΆκ° μΆλ ₯μ μ²λ¦¬νκΈ° μν΄) μ°λ¦¬μ ν¬λ§·ν°μ λλ€. #2616μμ μ μν "컨ν μ€νΈ"λ₯Ό μΆμ νλ λ°©λ²μ κ³ λ €ν΄μΌ ν©λλ€. λ©λͺ¨νλμ΄ ν΄λΉ κ°μ μ¬μ©)