Rspec-rails: rspec-rails와 ν•¨κ»˜ fixture_file_upload μ‚¬μš©ν•˜κΈ°

에 λ§Œλ“  2021λ…„ 01μ›” 06일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: rspec/rspec-rails

μ–΄λ–€ Ruby, Rails 및 RSpec 버전을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

루비 버전: 2.7.2
레일즈 버전: 6.1.0
RSpec 버전: 3.10.1(rspec-core) 및 4.0.2(rspec-rails)

κ΄€μ°°λœ 행동

μ—¬λ³΄μ„Έμš”! 앱을 6.0.3.4μ—μ„œ Rails 6.1둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λ €κ³  ν•˜λŠ”λ° fixture_file_upload λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. 이 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ λ‹€μŒ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

     NoMethodError:
       undefined method `file_fixture_path' for RSpec::Rails::FixtureFileUploadSupport::RailsFixtureFileWrapper:Class
       Did you mean?  fixture_path

ActionPack 이 fixture_file_upload 의 κ΅¬ν˜„μ„ λ³€κ²½ν–ˆμœΌλ©° RailsFixtureFileWrapper ν΄λž˜μŠ€μ— file_fixture_path λ©”μ„œλ“œκ°€ μžˆμ„ κ²ƒμœΌλ‘œ μ˜ˆμƒν•©λ‹ˆλ‹€.

μ˜ˆμƒλ˜λŠ” 행동

이 방법이 μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•Šκ³  νŒŒμΌμ„ μ—…λ‘œλ“œν•  κ²ƒμœΌλ‘œ κΈ°λŒ€ν•©λ‹ˆλ‹€.

예제 앱을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

https://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rb μ—μ„œ ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•œ 예제 앱을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ spec/fixtures 폴더에 pdf 파일이 μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 파일의 μ΄λ¦„μœΌλ‘œ fixture_file_upload λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ €κ³  ν•˜λŠ”λ° ν…ŒμŠ€νŠΈμ—μ„œ μ•žμ„œ μ„€λͺ…ν•œ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

λ©”λͺ¨

  • 이 방법을 잘λͺ» μ‚¬μš©ν–ˆμ„ μˆ˜λ„ μžˆμ§€λ§Œ 이 μ»¨ν…μŠ€νŠΈμ—μ„œ file_fixture_path λ₯Ό μ„€μ •ν•˜λŠ” 방법을 μ„€λͺ…ν•˜λŠ” λ¬Έμ„œλ₯Ό 찾을 수 μ—†μœΌλ―€λ‘œ μ–΄λ–€ 지침을 μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.
  • μ‹€μ œ 변경은 ActionPack ( lib/action_dispatch/testing/test_process.rb )μ˜€μŠ΅λ‹ˆλ‹€.
  • μ‹œκ°„ λ‚΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ‹ κ³ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” rspec-rails 4.1에 λŒ€ν•΄ 적극적으둜 μž‘μ—…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λΆ„κΈ°λ₯Ό 가리킀면 μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'

μˆ˜μ • 사항 이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ .

λΆˆνŽΈμ„ λ“œλ € μ£„μ†‘ν•©λ‹ˆλ‹€.

κ·Έλž˜λ„ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμœΌλ©΄ μ–Έμ œλ“ μ§€ λ‹€μ‹œ 보고해 μ£Όμ‹­μ‹œμ˜€.

λͺ¨λ“  3 λŒ“κΈ€

μ‹ κ³ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” rspec-rails 4.1에 λŒ€ν•΄ 적극적으둜 μž‘μ—…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λΆ„κΈ°λ₯Ό 가리킀면 μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'

μˆ˜μ • 사항 이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ .

λΆˆνŽΈμ„ λ“œλ € μ£„μ†‘ν•©λ‹ˆλ‹€.

κ·Έλž˜λ„ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμœΌλ©΄ μ–Έμ œλ“ μ§€ λ‹€μ‹œ 보고해 μ£Όμ‹­μ‹œμ˜€.

μ•Œλ €μ£Όμ…”μ„œ 정말 κ°μ‚¬ν•©λ‹ˆλ‹€!

이에 λŒ€ν•œ μž„μ‹œ ν•΄κ²° λ°©λ²•μœΌλ‘œ λ‚΄ Gemfile을 λ§Œμ§€μž‘κ±°λ¦¬κ³  λͺ¨λ“  쒅속성이 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” λŒ€μ‹  ν•΄λ‹Ή λ©”μ„œλ“œμ˜ μ†ŒμŠ€ μ½”λ“œ λ₯Ό μ‚΄νŽ΄λ³Έ ν›„ λ‚˜λ§Œμ˜ fixture_file_upload λ©”μ„œλ“œλ₯Ό μ •μ˜ν–ˆμŠ΅λ‹ˆλ‹€.

def fixture_file_upload(path, mime_type)
  Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰