Autofixture: AutoData рд╡рд┐рд╢реЗрд╖рддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕реНрдерд┐рд░рддрд╛ рддрдХ рдкрд╣реБрдВрдЪред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: AutoFixture/AutoFixture

рдирдорд╕реНрддреЗ,
рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рд░рддрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВред

[Theory, AutoData]
public void Dummy(string dummy)
{
    MethodBase method = MethodBase.GetCurrentMethod();
    IFixture fixture = method.GetCustomAttribute<AutoDataAttribute>().Fixture;


    Assert.Equal(dummy, dummy);
}

рдФрд░ рдореБрдЭреЗ 'AutoDataAttribute.Fixture' рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИред

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

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

рд╣рд╛рдБ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ AutoData wiki рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рдЦреЛрдЬ рдХреА рд╣реИред
рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ IOC рдХрдВрдЯреЗрдирд░ рдиреЗ IFixture рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рд╡рд╛рдпрд╛ рд╣реИред

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

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

рдирдорд╕реНрддреЗ,

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмрд╕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдерд┐рд░рддрд╛ рдХреЛ IFixture рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рдФрд░ рдпрд╣ рд╕реНрд╡рдпрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛:

c# [Theory, AutoData] public void Dummy(string dummy, IFixture fixture) { }

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

рд╣рд╛рдБ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ AutoData wiki рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рдЦреЛрдЬ рдХреА рд╣реИред
рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ IOC рдХрдВрдЯреЗрдирд░ рдиреЗ IFixture рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рд╡рд╛рдпрд╛ рд╣реИред

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдк IoC рдХреЗ рд╕рд╛рде рдлрд┐рдХреНрд╕рдЪрд░ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдЗрд╕рдХреА рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдЕрдзрд┐рдХрддрд░ рдЬрдЯрд┐рд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

[Theory, AutoMoqData]
public void Dummy(IFixture fixture, [Frozen]Mock<IComplexInterfaceWith30SubInterfaces> needed, TestClass sut)
{
    //This will add interfaces setups for needed by retrieving them from the IoC container or by property access.
    SetupInterfaces(fixture, needed);
    //We can now use needed injected in sut.
}

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрд╕рд╛рди рдЙрджрд╛рд╣рд░рдг рд╣реИ

рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рд╣реИ

[Theory, AutoMoqData]
public void Dummy(IFixture fixture)
{
    Assert.Equal(String.Empty, String.Empty);
}

рдЗрд╕ рдкрд░

[Fact]
public void Dummy2()
{
    IFixture fixture = new Fixture().Customize(new AutoMoqCustomization());

    Assert.Equal(String.Empty, String.Empty);
}

рдЕрдзрд┐рдХрддрд░ рдЬрдЯрд┐рд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕рд╣рдордд рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рд╣реИред рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рд╕рд╣рд╛рдпрдХ рджреЛрд╣рд░рд╛рд╡ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ When() рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдирд┐рдореНрди рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

c# public void Test([Frozen] IProvider provider, ISut sut, IFixture fixture) { // arrange WhenProviderReturnsOnlyInitializedEntities(provider, fixture); ..... }

рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдЕрднреА рднреА рд╡рд╣реА рд╣реИ

рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ AutoData wiki рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ?

@ malylemire1 рдореИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╣реАрдВ рдПрдХ рдбреЙрдХреНрдЯрд░ рд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдирдореВрдиреЗ рдХреЛ рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ

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