Autofixture: рдЧреИрд░-рдЬреЗрдиреЗрд░рд┐рдХ рдмрдирд╛рдПрдВ (рдкреНрд░рдХрд╛рд░) рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдирд╡ре░ 2015  ┬╖  2рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: AutoFixture/AutoFixture

рдореИрдВ (рдПрдмреА) рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдлрд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╕рдВрджреЗрд╢ (рдЖрджреЗрд╢ рдФрд░ рдкреНрд░рд╢реНрди) рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдСрдЯреЛрдлрд┐рдХреНрд╕реНрдЪрд░ рдмрдирд╛рдПрдВрдЧреЗ, рд╡реЗ JSON рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдП рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрджрд╕реВрд░рдд рдХреЛрдб рдХреА рд╕реИрдХрдбрд╝реЛрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдВ рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдкрдиреЗ/рд╣реЗрд▓реНрдкрдкреЗрдЬ рдХреНрд╖реЗрддреНрд░ (рдпрдХ) рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

``` рд╕реА#
рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП MethodInfo CreateMethodInfo =
GetMethod (() => рдирдореВрдирд╛ рдлреИрдХреНрдЯрд░реАред рдмрдирд╛рдПрдВ(рдирдИ рд╕реНрдерд┐рд░рддрд╛ ()))
.GetGenericMethodDefinition ();

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдБ (рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░)
{
рд╡рд░ рд╕реНрдерд┐рд░рддрд╛ = рдирдИ рд╕реНрдерд┐рд░рддрд╛ ();
рдЗрдВрдЯ рдЗрдВрдбреЗрдХреНрд╕ = 1;
рдлрд┐рдХреНрд╕реНрдЪрд░ред рд░рдЬрд┐рд╕реНрдЯрд░ (() => "рдирдореВрдирд╛ рдкрд╛рда" + рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ ++);

return CreateMethodInfo.MakeGenericMethod(type).Invoke(null, new object[] { fixture });

}

рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ MethodInfo GetMethod (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐)> рдореЗрдердбрдХреЙрд▓) =>
((MethodCallExpression)methodCall.Body)редрд╡рд┐рдзрд┐;
```

рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕рдЯреАрдХ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдСрдЯреЛрдлрд┐рдХреНрд╕реНрдЪрд░ рдХреА Fixture.Create<T>() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдп Create<T> рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдореЗрд░реЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдЧреИрд░-рд╕рд╛рдорд╛рдиреНрдп Create(Type) рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИ?

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

рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛?

c# var specimen = new SpecimenContext(fixture).Resolve(type);

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

рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛?

c# var specimen = new SpecimenContext(fixture).Resolve(type);

рдардВрдбрд╛! рдпрд╣реА рдЪрд╛рд▓ рд╣реИ! рдзрдиреНрдпрд╡рд╛рджред

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

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

Eldar1205 picture Eldar1205  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

malylemire1 picture malylemire1  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ