рдореИрдВрдиреЗ рдиреЗрд╕реНрдЯреЗрдб рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдСрдЯреЛ-рдореЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AutoMoqCustomization
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдореЗрд░реА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВред рдпрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Mock<IObject>
рдХреЛ рдлреНрд░реАрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреНрдпреЛрдВ рд╣реИ рдЬрд╣рд╛рдВ Moq рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдФрд░ IObject
рд╕реНрдерд┐рд░рддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ?
[TestClass]
public class MyTestClass
{
[TestMethod]
public void Test()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var objMock = fixture.Freeze<Mock<IObject>>();
var sut = fixture.Create<Dependant2>();
sut.Obj.Should().BeSameAs(objMock);
}
}
public interface IObject { }
public interface IDependant { IObject Obj { get; } }
public class MyObject : IObject { }
public class Dependant2
{
public Dependant2(IDependant dependant)
{
Obj = dependant.Obj;
}
public IObject Obj { get; }
}
AutoMoqCustomization
рдирдХрд▓реА рд╡рд╕реНрддреБрдПрдВ рдмрдирд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдирдХрд▓реА рдХреЗ рд╕рджрд╕реНрдп рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп AutoConfiguredMoqCustomization
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдП) рдирдХрд▓реА рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрдЯрдЯреЗрдмрд▓ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдмреА) рд╕реЗрдЯрдЕрдк рд╡рд┐рдзрд┐рдпреЛрдВ/рдЗрдВрдбреЗрдХреНрд╕рд░реНрд╕ рдХреЛ рд╕реНрдерд┐рд░рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЖрд▓рд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ (рдФрд░ рдпрд╛рдж рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдЧрд╛
рджреЛ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рдпрд╣ рд╕реЗрдЯрдЕрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
ref
рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпрд╛рдВрдЪреАрдЯ рд╢реАрдЯ рдХреЗ
рддреЗрдЬреА рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ AutoConfiguredMoqCustomization
рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде IDependant
рдФрд░ рдпрд╣ рдЬрдореЗ рд╣реБрдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЧреИрд░-рдирд┐рдкрдЯрд╛рди рдпреЛрдЧреНрдп рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рднреА рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? Moq рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕реЗрдЯрд░ рди рд╣реЛрдиреЗ рдкрд░ рднреА рдХреЛрдИ рдкреНрд░реЙрдкрд░реНрдЯреА рдЧреЗрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рджрд░рдЕрд╕рд▓, рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред рдпрд╣ рд╕реЗрдЯрдЕрдк рдкреНрд░рд╛рдкреНрдд-рдХреЗрд╡рд▓ рдЧреБрдг рднреА рдХрд░рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдмреБрд░рд╛ред
рдореБрдЭреЗ Moq рдореЗрдВ рдПрдХ рдмрдЧ рднреА рдпрд╛рдж рд╣реИ рдЬреЛ AutoMoq рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдХреЗрд╡рд▓-рдкреНрд░рд╛рдкреНрдд рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд┐рдпрд╛, рддреЛ рдЖрдкрдХреЛ Moq рд╕рдВрд╕реНрдХрд░рдг 4.2.1409.1722 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо (# 434 рдкрд░ рд╡рд┐рд╡рд░рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Moq рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред
рдЙрдЪреНрдЪрддрдо Moq рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬреЛ 4.2.1409.1722 рд╕реЗ рдХрдо рд╣реИ рдФрд░ рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдпрд╣ рдХреЗрд╡рд▓-рдкреНрд░рд╛рдкреНрдд рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред Moq рдмрдЧ рдХреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд╡реАрдирддрдо рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ рдерд╛ред рдорджрдж рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ http://stackoverflow.com/q/36656741/126014
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
AutoMoqCustomization
рдирдХрд▓реА рд╡рд╕реНрддреБрдПрдВ рдмрдирд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИредрдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдирдХрд▓реА рдХреЗ рд╕рджрд╕реНрдп рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп
AutoConfiguredMoqCustomization
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдП) рдирдХрд▓реА рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрдЯрдЯреЗрдмрд▓ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдмреА) рд╕реЗрдЯрдЕрдк рд╡рд┐рдзрд┐рдпреЛрдВ/рдЗрдВрдбреЗрдХреНрд╕рд░реНрд╕ рдХреЛ рд╕реНрдерд┐рд░рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЖрд▓рд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ (рдФрд░ рдпрд╛рдж рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдЧрд╛рджреЛ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рдпрд╣ рд╕реЗрдЯрдЕрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
ref
рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпрд╛рдВрдЪреАрдЯ рд╢реАрдЯ рдХреЗ