Autofixture: κ°€μ§œλ₯Ό λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€

에 λ§Œλ“  2018λ…„ 06μ›” 04일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: AutoFixture/AutoFixture

λͺ‡ λ…„ 전에 μž‘μ—…ν–ˆλ˜ ν”„λ‘œμ νŠΈλ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” μ€‘μž…λ‹ˆλ‹€. κ·Έ κ³Όμ •μ—μ„œ FakeItEasy 및 AutoFixture의 μ΅œμ‹  λ²„μ „μœΌλ‘œ μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό μœ μ‚¬ν•œ 였λ₯˜λ‘œ μ‹€νŒ¨ν•œ ν…ŒμŠ€νŠΈκ°€ 40개 μžˆμŠ΅λ‹ˆλ‹€.

AutoFixtureκ°€ λ‹€μŒμ—μ„œ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†μŠ΅λ‹ˆλ‹€.
FakeItEasy.Fake 1[System.Collections.Generic.IList 1[AllOverIt.Evaluator.AoiFormulaTokenProcessorContext]] μ˜ˆμ™Έλ‘œ 인해 생성에 예기치 μ•Šκ²Œ μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄λΆ€ μ˜ˆμ™Έκ°€ λ³΄κ³ ν•˜λŠ” μœ„μΉ˜:
Failed to create fake of type System.Collections.Generic.IList 1[AllOverIt.Evaluator.AoiFormulaTokenProcessorContext]`

μ‹€νŒ¨ν•œ 쀄은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
Fixture.Create<Fake<IList<AoiFormulaTokenProcessorContext>>>();

ν…ŒμŠ€νŠΈλ‘œ 더 κ°„λ‹¨ν•œ 것을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.
Fixture.Create<Fake<IList<int>>>();

이것은 λ˜μ§€μ§€ μ•Šμ•˜μœΌλ―€λ‘œ AoiFormulaTokenProcessorContext 의 μƒμ„±μžλ₯Ό μ‚΄νŽ΄

public AoiFormulaTokenProcessorContext(Func<char, bool, bool> predicate, Func<char, bool, bool> processor)

https://github.com/AutoFixture/AutoFixture/issues/984 μ—μ„œ 읽은 ν›„ 여기에 'GenerateDelegates'λ₯Ό μΆ”κ°€ν•˜λ €κ³  μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.
Fixture.Customize(new AutoFakeItEasyCustomization {GenerateDelegates = true});

ν•˜μ§€λ§Œ μ—¬μ „νžˆ 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

이 μ½”λ“œκ°€ μž‘λ™ μ€‘μ΄μ—ˆμœΌλ―€λ‘œ 아직 λ°œκ²¬ν•˜μ§€ λͺ»ν•œ 또 λ‹€λ₯Έ μ£Όμš” λ³€κ²½ 사항이 μžˆλ‹€κ³  κ°€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λˆ„κ΅°κ°€κ°€ λ‚΄ λ°©μ‹μœΌλ‘œ ν•œλ‘ 가지 μ œμ•ˆμ„ ν•  수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

ν‹°μ•„.

question

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

이해 ν–ˆμ–΄μš”. μˆ˜μ‹­ λ…„μ˜ κ²½ν—˜μ„ 톡해 더 잘 μ•Œκ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μ €λŠ” 같은 λ°°λ₯Ό 타고 λ˜‘κ°™μ€ μ§ˆλ¬Έμ„ ν–ˆμŠ΅λ‹ˆλ‹€. 응닡해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

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

μ‹œλ‚˜λ¦¬μ˜€ 곡유 κ°μ‚¬ν•©λ‹ˆλ‹€!

ν‰μ†Œμ™€ 같이 μ΅œμ†Œ, μ™„μ „ 및 검증 κ°€λŠ₯ν•œ 예 λ₯Ό μ œκ³΅ν•˜μ—¬ 이유λ₯Ό μžμ„Ένžˆ 쑰사할 수 μžˆλ„λ‘ λ³΅μ‚¬ν•˜μ—¬ 뢙여넣을 수 μžˆμŠ΅λ‹ˆκΉŒ? μ•…λ§ˆλŠ” μ’…μ’… νŠΉμ • μ„ΈλΆ€ 사항에 μžˆμœΌλ―€λ‘œ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό 잘 μ„€λͺ…ν•˜λ”λΌλ„ μ–ΈκΈ‰λ˜μ§€ μ•Šμ€ μ„ΈλΆ€ 사항이 λ¬Έμ œκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

λ§Žμ€ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€! :μ•ˆλ„ν•˜λŠ”:

μ£„μ†‘ν•©λ‹ˆλ‹€. λ‹€λ₯Έ(μ•„λ§ˆλ„ ν•œ 쌍의) ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€μ—ˆμ–΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. λ‚΄ 질문이 λ‚΄κ°€ λ‚˜κ°€κΈ° 전에 λΆ„λͺ…ν•œ 무언가λ₯Ό μ΄‰λ°œν•  수 있기λ₯Ό λ°”λžκ³  λ‚΄ 래퍼 λ©”μ„œλ“œλ₯Ό μ›μ‹œ AutoFixture / FakeItEasy μ½”λ“œλ‘œ λ³€ν™˜ν•˜λŠ” 것과 관련이 있기 λ•Œλ¬Έμ— κ·Έλ ‡κ²Œ ν–ˆμŠ΅λ‹ˆλ‹€.

쒋은 μ†Œμ‹μ€ λ‚΄κ°€ 그것을 고친 것 κ°™μŠ΅λ‹ˆλ‹€.

문제λ₯Ό μΌμœΌν‚€λŠ” AoiFormulaTokenProcessorContext ν΄λž˜μŠ€λŠ” internal (λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ—μ„œ). public ν•˜λ©΄ 였λ₯˜κ°€ μ‚¬λΌμ§‘λ‹ˆλ‹€.

AssemblyInfo.cs νŒŒμΌμ— 이미 [assembly: InternalsVisibleTo("...")] κ°€ μžˆμ—ˆμ§€λ§Œ 이전 ν”„λ‘œμ νŠΈμ—λ„ [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] ν¬ν•¨λ˜μ–΄ μžˆλ‹€λŠ” 것을 κΈ°μ–΅ν–ˆμŠ΅λ‹ˆλ‹€.

ν›„μžκ°€ 무엇을 ν•˜λŠ”μ§€ κΈ°μ–΅λ‚˜μ§€ μ•Šμ§€λ§Œ 였λ₯˜λŠ” 이제 λͺ¨λ‘ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€.

쒋은 μ†Œμ‹μ€ λ¬Έμ œκ°€ μ™„ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.νŽΈμ•ˆν•¨: 이것이 μ œκ°€ μƒ˜ν”Œμ„ μš”μ²­ν•œ μ΄μœ μž…λ‹ˆλ‹€. λ‹€λ₯Έ μš”μ†Œλ₯Ό 격리할 λ•Œ 항상 더 μ‰½μŠ΅λ‹ˆλ‹€.

ν›„μžκ°€ 무엇을 ν•˜λŠ”μ§€ κΈ°μ–΅λ‚˜μ§€ μ•Šμ§€λ§Œ 였λ₯˜λŠ” 이제 λͺ¨λ‘ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€.

μ•Œμ•„μš” :smile: Fakes 및 Castle 의 ν”„λ‘μ‹œμ™€ 관련이 있으며, λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. 예, ν΄λž˜μŠ€κ°€ 내뢀적이라면 μ‹€μ œλ‘œ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

이해 ν–ˆμ–΄μš”. μˆ˜μ‹­ λ…„μ˜ κ²½ν—˜μ„ 톡해 더 잘 μ•Œκ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μ €λŠ” 같은 λ°°λ₯Ό 타고 λ˜‘κ°™μ€ μ§ˆλ¬Έμ„ ν–ˆμŠ΅λ‹ˆλ‹€. 응닡해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰