Autofixture: рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ 4.0.0-rc1 (рдкреНрд░рддрд┐рдЧрдорди) рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдирд╡ре░ 2017  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: AutoFixture/AutoFixture

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг AutoFixture 3.51.0 рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди 4.0.0-rc1 рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ:
(рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдореЗрдВ рднреА: c856cd6 )

``` рд╕реА#
[рддрдереНрдп]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп shouldApplyCustomizationsFromBaseClass ()
{
рд╡рд░ рд╕реНрдерд┐рд░рддрд╛ = рдирдИ рд╕реНрдерд┐рд░рддрд╛ ();
рд╕реНрдерд┐рд░рддрд╛ред рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ(рд╕реА => рд╕реАред рдмрд┐рдирд╛ (рдмреАрд╕реА => рдмреАрд╕реАред рдЖрдИрдбреА));
рд╡рд░ рд░реЗрд╕ = рд╕реНрдерд┐рд░рддрд╛ред рдмрдирд╛рдПрдБ();
рдЬреЛрд░ рджреЗрдВред рд╕рдорд╛рди (0, рд░реЗрд╕ред рдЖрдИрдбреА);
}

[рддрдереНрдп]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп shouldApplyCustomizationsFromInterface ()
{
рд╡рд░ рд╕реНрдерд┐рд░рддрд╛ = рдирдИ рд╕реНрдерд┐рд░рддрд╛ ();
рд╕реНрдерд┐рд░рддрд╛ред рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ(рд╕реА => рд╕реАред рдмрд┐рдирд╛ (рдмреАрд╕реА => рдмреАрд╕реАред рдЖрдИрдбреА));
рд╡рд░ рд░реЗрд╕ = рд╕реНрдерд┐рд░рддрд╛ред рдмрдирд╛рдПрдБ();
рдЬреЛрд░ рджреЗрдВред рд╕рдорд╛рди (0, рд░реЗрд╕ред рдЖрдИрдбреА);
}

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IInterface
{
рдЗрдВрдЯ рдЖрдИрдбреА {рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ; рд╕реЗрдЯ; }
}

рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдмреЗрд╕рдХреНрд▓рд╛рд╕
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯ рдЖрдИрдбреА {рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ; рд╕реЗрдЯ; }
}

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ ImplClass: рдмреЗрд╕рдХреНрд▓рд╛рд╕, IInterface
{

}
```

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

рд╕рд╡рд╛рд▓ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЦреИрд░, рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА рдЬрдм рдПрдХ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдЕрдиреНрдп рдЙрдк-рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

```рд╕реА#
рдХреНрд▓рд╛рд╕ рдмреЗрд╕ {рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдорди {рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ; рд╕реЗрдЯ; } }
рдХрдХреНрд╖рд╛ рдЪрд╛рдЗрд▓реНрдб1: рдЖрдзрд╛рд░ { }
рдХрдХреНрд╖рд╛ рдЪрд╛рдЗрд▓реНрдб 2: рдЖрдзрд╛рд░ { }

[рддрдереНрдп]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп
{
рд╡рд░ рд╕реНрдерд┐рд░рддрд╛ = рдирдИ рд╕реНрдерд┐рд░рддрд╛ ();
рд╕реНрдерд┐рд░рддрд╛ред рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ(c => c.with(x => x.Common, "dummy"));

var result = fixture.Create<Child2>();

Assert.NotNull(result.Common);

}


In the v3 this test failed, causing a lot of confusion to people. As you might imagine, the scenarios were more complicated and it was very non-obvious why the particular members are not initialized. 

For instance, the following code will not work, which again proves that API is not designed for that.
```c#
fixture.Customize<Base>(c => c.With(x => x.Common, "foo"));

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

рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдЖрдзрд╛рд░/рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЧреБрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрди рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
```рд╕реА#
рдирд┐рдЬреА рд╡рд░реНрдЧ рд╕рдорд╛рдирдкреНрд░реЙрдкрд░реНрдЯреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛: IRequestSpecification
{
рдирд┐рдЬреА рдкрдардиреАрдп рдкреНрд░рдХрд╛рд░ _declaringType;
рдирд┐рдЬреА рд░реАрдбреЛрдирд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ _name;

public SamePropertySpecification(Type declaringType, string name)
{
    _declaringType = declaringType;
    _name = name;
}

public bool IsSatisfiedBy(object request)
{
    if (request is PropertyInfo pi)
    {
        return pi.DeclaringType == this._declaringType &&
               pi.Name.Equals(this._name, StringComparison.Ordinal);
    }

    return false;
}

}

[рддрдереНрдп]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп TestBasePropertyOmitting ()
{
рд╡рд░ рд╕реНрдерд┐рд░рддрд╛ = рдирдИ рд╕реНрдерд┐рд░рддрд╛ ();

fixture.Customizations.Add(new Omitter(new SamePropertySpecification(typeof(Base), nameof(Base.Common))));

var result = fixture.Create<Child1>();
Assert.Null(result.Common);

}
```

рдпрджрд┐ рдЖрдкрдХреЛ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдмрд╛рд░-рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк fixture рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдпрд╣ рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИред рдЕрдкрдиреЗ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ (рдФрд░ рд╢рд╛рдпрдж рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдмрдирд╛рдпреЗрдВрдЧреЗ)ред

рд╡реИрд╕реЗ: рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рднреА рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХрд┐рд╕реА рдПрдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?

рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЦреИрд░, рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдмрдЧ рдлрд┐рдХреНрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрднреА рднреА "рдлреАрдЪрд░" рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрд▓реНрдХрд┐, рдпрд╣ рдПрдХ рдЕрд╡рд╛рдВрдЫрд┐рдд рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдерд╛ рдФрд░ рдЗрд╕реЗ рдЕрдВрддрддрдГ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рд╕рднреА рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХрд┐рд╕реА рдПрдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?

рдирд╣реАрдВ, рдРрд╕рд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред рдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдФрд░ рдкреНрд░рд╢реНрди рд╣реИрдВ ЁЯШГ

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЯреНрд╡реАрдХ рдХрд┐рдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдмрдирд╛рдИ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ 'Fixture.Customize' рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ(...)'ред рдореИрдВ рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реВрдВ рдЙрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИрдХреА рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ v3 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рдерд╛ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдЧреБрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ (рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг ) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЪрд╛рд▓ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@nphmuller рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЖрдкрдХрд╛ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдХреЛрдб рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдЖрдкрдХреЛ рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдмрд▓рд┐рджрд╛рди рд╣рдо рд╕рднреА рдХреА рднрд▓рд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджреЛрд╖ рдирд╣реАрдВ рджреЗрдВрдЧреЗ

рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рджреЛрд╖ рдирд╣реАрдВред рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭреЗрдВ рдФрд░ рд╕рд╣рдордд рднреА рд╣реЛрдВред рдмрд╕ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИ

рдмрд╛рдж рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рддрд░реАрдХрд╛ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдареАрдХ рд╣реИред

рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░ - рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реА .. рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдореИрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЖрдзрд╛рд░ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдиреБрдХреВрд▓рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ?

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо Entity Framework рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ AutoFixture рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реА рд╕рдВрд╕реНрдерд╛рдПрдВ рдХрд░рддреА рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВред рдЖрдИрдбреА, рдХрд┐рд░рд╛рдпреЗрджрд╛рд░-рдЖрдИрдбреА (рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдВрдкрддреНрддрд┐), рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВред

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

рдЗрд╕рд▓рд┐рдП рдЗрди рдЧреБрдгреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдСрдкреНрдЯ-рдЗрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд▓реЗрд╡рд▓ рдкрд░, рдХреНрдпреЛрдВрдХрд┐ рдирд╣реАрдВ рддреЛ рд╣рд░ рдПрдВрдЯрд┐рдЯреА рдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд▓реЛрдк рд░реВрд▓ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

@nphmuller рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рд╣рд╛рдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рджреГрд╢реНрдп рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЪрд╛рд╣рд┐рдПред

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