Autofixture: рдирдХрд▓реА рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЬреВрди 2018  ┬╖  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});

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдорд╛рди рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╣реАрдВ рдФрд░ рдПрдХ рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рдпрд╛ рджреЛ рдореЗрд░реЗ рд░рд╛рд╕реНрддреЗ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИред

рдЯреАрдЖрдИрдП.

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореЗрдВ рд╕рдордЬред рдореЗрд░реЗ рдкрд╛рд╕ рджрд╢рдХреЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдмреЗрд╣рддрд░ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдореИрдВ рдПрдХ рд╣реА рдирд╛рд╡ рдореЗрдВ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд╣реА рдкреВрдЫрддрд╛ рд╣реВрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдкрд░рд┐рджреГрд╢реНрдп рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреНрдпрд╛ рдореИрдВ рдЖрдкрд╕реЗ рдиреНрдпреВрдирддрдо, рдкреВрд░реНрдг рдФрд░ рд╕рддреНрдпрд╛рдкрди рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдореИрдВ рдХрд╛рд░рдг рдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! :рдХрд╛рд░реНрдп рдореБрдХреНрдд:

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдФрд░ рдПрдХ рдФрд░ (рд╕рдВрднрд╡рддрдГ рдЬреЛрдбрд╝реА) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ - рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореЗрд░реЗ рдкреНрд░рд╢реНрди рдиреЗ рдореЗрд░реЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдРрд╕рд╛ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдореЗрд░реЗ рд░реИрдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрдЪреНрдЪреЗ рдСрдЯреЛрдлрд┐рдХреНрдЪрд░/FakeItEasy рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ AoiFormulaTokenProcessorContext рд╡рд░реНрдЧ internal (рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ) рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ public рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рддреЛ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИред

рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕реЗрдВрдмрд▓реАрдЗрдиреНрдлреЛ.рд╕реАрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ [assembly: InternalsVisibleTo("...")] рдерд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдореЗрд░реА рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред

рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЕрдм рджреВрд░ рд╣реЛ рдЧрдИ рд╣реИрдВред

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрдо рд╣реЛ рдЧрдИ рд╣реИ: рдЖрд░рд╛рдо рд╕реЗ: рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдирдореВрдирд╛ рдорд╛рдВрдЧрд╛ - рдЬрдм рдЕрдиреНрдп рдХрд╛рд░рдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЕрдм рджреВрд░ рд╣реЛ рдЧрдИ рд╣реИрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ :smile: рдпрд╣ рдирдХрд▓реА рдФрд░ Castle рдХреА рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рдВ, рдЕрдЧрд░ рдХрдХреНрд╖рд╛ рдЖрдВрддрд░рд┐рдХ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдореЗрдВ рд╕рдордЬред рдореЗрд░реЗ рдкрд╛рд╕ рджрд╢рдХреЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдмреЗрд╣рддрд░ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдореИрдВ рдПрдХ рд╣реА рдирд╛рд╡ рдореЗрдВ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд╣реА рдкреВрдЫрддрд╛ рд╣реВрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

gtbuchanan picture gtbuchanan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Ridermansb picture Ridermansb  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ploeh picture ploeh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tomasaschan picture tomasaschan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TroyHouston picture TroyHouston  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ