λͺ λ μ μ μμ νλ νλ‘μ νΈλ₯Ό μ λ°μ΄νΈνλ μ€μ λλ€. κ·Έ κ³Όμ μμ 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});
νμ§λ§ μ¬μ ν κ°μ λ¬Έμ κ° μμ΅λλ€.
μ΄ μ½λκ° μλ μ€μ΄μμΌλ―λ‘ μμ§ λ°κ²¬νμ§ λͺ»ν λ λ€λ₯Έ μ£Όμ λ³κ²½ μ¬νμ΄ μλ€κ³ κ°μ ν μ μμ΅λλ€. λκ΅°κ°κ° λ΄ λ°©μμΌλ‘ νλ κ°μ§ μ μμ ν μ μκΈ°λ₯Ό λ°λλλ€.
ν°μ.
μλλ¦¬μ€ κ³΅μ κ°μ¬ν©λλ€!
νμμ κ°μ΄ μ΅μ, μμ λ° κ²μ¦ κ°λ₯ν μ λ₯Ό μ 곡νμ¬ μ΄μ λ₯Ό μμΈν μ‘°μ¬ν μ μλλ‘ λ³΅μ¬νμ¬ λΆμ¬λ£μ μ μμ΅λκΉ? μ λ§λ μ’ μ’ νΉμ μΈλΆ μ¬νμ μμΌλ―λ‘ μλ리μ€λ₯Ό μ μ€λͺ νλλΌλ μΈκΈλμ§ μμ μΈλΆ μ¬νμ΄ λ¬Έμ κ° λ μ μμ΅λλ€.
λ§μ κ°μ¬λ립λλ€! :μλνλ:
μ£μ‘ν©λλ€. λ€λ₯Έ(μλ§λ ν μμ) νλ‘μ νΈλ₯Ό λ§λ€μμ΄μΌ νμ΅λλ€. λ΄ μ§λ¬Έμ΄ λ΄κ° λκ°κΈ° μ μ λΆλͺ ν 무μΈκ°λ₯Ό μ΄λ°ν μ μκΈ°λ₯Ό λ°λκ³ λ΄ λνΌ λ©μλλ₯Ό μμ AutoFixture / FakeItEasy μ½λλ‘ λ³ννλ κ²κ³Ό κ΄λ ¨μ΄ μκΈ° λλ¬Έμ κ·Έλ κ² νμ΅λλ€.
μ’μ μμμ λ΄κ° κ·Έκ²μ κ³ μΉ κ² κ°μ΅λλ€.
λ¬Έμ λ₯Ό μΌμΌν€λ AoiFormulaTokenProcessorContext
ν΄λμ€λ internal
(λ€λ₯Έ νλ‘μ νΈμμ). public
νλ©΄ μ€λ₯κ° μ¬λΌμ§λλ€.
AssemblyInfo.cs νμΌμ μ΄λ―Έ [assembly: InternalsVisibleTo("...")]
κ° μμμ§λ§ μ΄μ νλ‘μ νΈμλ [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
ν¬ν¨λμ΄ μλ€λ κ²μ κΈ°μ΅νμ΅λλ€.
νμκ° λ¬΄μμ νλμ§ κΈ°μ΅λμ§ μμ§λ§ μ€λ₯λ μ΄μ λͺ¨λ μ¬λΌμ‘μ΅λλ€.
μ’μ μμμ λ¬Έμ κ° μνλμμ΅λλ€.νΈμν¨: μ΄κ²μ΄ μ κ° μνμ μμ²ν μ΄μ μ λλ€. λ€λ₯Έ μμλ₯Ό 격리ν λ νμ λ μ½μ΅λλ€.
νμκ° λ¬΄μμ νλμ§ κΈ°μ΅λμ§ μμ§λ§ μ€λ₯λ μ΄μ λͺ¨λ μ¬λΌμ‘μ΅λλ€.
μμμ :smile: Fakes λ° Castle
μ νλ‘μμ κ΄λ ¨μ΄ μμΌλ©°, λ΄λΆμ μΌλ‘ μ¬μ©λ©λλ€. μ, ν΄λμ€κ° λ΄λΆμ μ΄λΌλ©΄ μ€μ λ‘ λμμ΄ λ κ²μ
λλ€.
μ΄ν΄ νμ΄μ. μμ λ μ κ²½νμ ν΅ν΄ λ μ μκ³ μμ΄μΌ ν©λλ€. μ λ κ°μ λ°°λ₯Ό νκ³ λκ°μ μ§λ¬Έμ νμ΅λλ€. μλ΅ν΄ μ£Όμ μ κ°μ¬ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄ν΄ νμ΄μ. μμ λ μ κ²½νμ ν΅ν΄ λ μ μκ³ μμ΄μΌ ν©λλ€. μ λ κ°μ λ°°λ₯Ό νκ³ λκ°μ μ§λ¬Έμ νμ΅λλ€. μλ΅ν΄ μ£Όμ μ κ°μ¬ν©λλ€.