Microsoft рдлрд╝реЗрдХ (рд╢рд┐рдо) рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдкреГрдердХ рдХреЛрдб

рдкрд╣рд▓реА рдмрд╛рд░ рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛ рдерд╛ рдФрд░ рд╕реНрдерд┐рд░ рд╕рджрд╕реНрдпреЛрдВ рдкрд░ рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдореЛрдХреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рдерд╛ред рдЗрд╕ рд╕рдордп рдиреЗрдЯ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ред рдЖрдк рдЕрд╕реАрдорд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЖрдИрдУрд╕реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддреБ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рдмрд┐рдирд╛ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред
рдореИрдВрдиреЗ рдЕрдВрддрддрдГ рдЬрд╛рд╡рд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдиреЗрдЯ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рддреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред
рдФрд░ 2012 рдореЗрдВ, рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рдирдХрд▓реА рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдмрд┐рд▓реНрдХреБрд▓ рднреА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рднреАред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд MSDN рдХреЗ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ (рдХреЗрд╡рд▓ рд╢рд┐рдо рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯрдмреНрд╕ рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХреЗ рдирд╣реАрдВ рд╣реИрдВ)ред

Microsoft "рд╢рд┐рдо" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА, рдЗрд╕реЗ рд░рд╣рдиреЗ рджреЛ - рд╢рд┐рдоред

рд╢рд┐рдо рдХреНрдпрд╛ рд╣реИрдВ
Microsoft Fakes рджреЛ рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ - рд╢рд┐рдо рдФрд░ рд╕реНрдЯрдмреНрд╕ред
рд╢рдореНрд╕ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдкрд░ рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕реЗрдВрдмрд▓реА рдХреЙрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ .рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрд╕реЗрдВрдмрд▓реАред
рдЫрд╡рд┐

рд╕реНрдЯрдмреНрд╕ рдФрд░ рд╢рд┐рдо рдХреЗ рдмреАрдЪ рдХрд╛ рд╡рд┐рдХрд▓реНрдк
рдЖрдорддреМрд░ рдкрд░ рд╡реАрдПрд╕ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдзрд╛рди рдпрд╛ рдмрд╛рд╣рд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕ рдпрд╛ рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрднрд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЙрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрдВрджрд░ рд╣реИ, рдФрд░ рдмрд╛рд╣рд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢рд┐рдоред рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯрдмреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдЬреИрд╕реЗ рдХрд┐ System.dll рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдЕрдкрдШрдЯрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЗ рдЙрдкрдпреЛрдЧ
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдШрдЯрдХ рдореЗрдВ DateTime.Now рдХреЙрд▓ рд╣реИ:
// Code under test: public int GetTheCurrentYear() { return DateTime.Now.Year; } 

рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдЖрдк Now рд╕рдВрдкрддреНрддрд┐ pwm рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рд╣рдореЗрд╢рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рджреЗрддрд╛ рд╣реИ
рдПрдХ рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

1. рдПрдХ рдирдХрд▓реА рдирд┐рд░реНрдорд╛рдг рдЬреЛрдбрд╝рдирд╛
рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ, рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдЦреЛрд▓реЗрдВ рдФрд░ рдЙрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред System.dll рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ DateTime рд╡рд░реНрдЧ рд╣реИред рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд╕реЗ "рдлреЙрдХреНрд╕ рдЕрд╕реЗрдВрдмрд▓реА рдЬреЛрдбрд╝реЗрдВ" рдЪреБрдиреЗрдВред

2. рдПрдХ ShimsContext рдХреЗ рдЕрдВрджрд░ рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
  [TestClass] public class TestClass1 { [TestMethod] public void TestCurrentYear() { int fixedYear = 2000; // Shims can be used only in a ShimsContext: using (ShimsContext.Create()) { // Arrange: // Shim DateTime.Now to return a fixed date: System.Fakes.ShimDateTime.NowGet = () => { return new DateTime(fixedYear, 1, 1); }; // Instantiate the component under test: var componentUnderTest = new MyComponent(); // Act: int year = componentUnderTest.GetTheCurrentYear(); // Assert: // This will always be true if the component is working: Assert.AreEqual(fixedYear, year); } } } 

рд╢рд┐рдо рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо Fakes.Shim рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдореВрд▓ рдирд╛рдореЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧреИрд░-рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХрд╛рд░ рдирд╛рдо рдФрд░ рд╡рд┐рдзрд┐ рдирд╛рдо рдХреЗ рдмреАрдЪ AllInstances рдЬреЛрдбрд╝реЗрдВ:
 System.IO.Fakes.ShimFile.AllInstances.ReadToEnd = ... 

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБрдУрдВ, рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ, рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╢рд┐рдо рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реВрдВрдЧрд╛, рдЬреЛ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд┐рдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In151185/


All Articles