рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдирд╛рдо рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ, рд╣рдо Microsoft рд░рд┐рд╕рд░реНрдЪ -
Microsoft рдореЛрд▓реНрд╕ рдЖрдЗрд╕реЛрд▓реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдПрдХ рдЙрддреНрдкрд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╣реЗрдмрд░рд╛рдЗрдЬрд╝рд░
рдПрд▓реЗрдХ_рд╕рд╛рдЗрд╕ рдХреА
рдкреЛрд╕реНрдЯ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдЙрдирд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░
рдорд┐рд▓рд╛ ред рдореБрдЭреЗ рдкрддрдВрдЧрд╛ рдЗрддрдирд╛ рдкрд╕рдВрдж рдЖрдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдХреНрдпреЛрдВ?
рдкрд╣рд▓реЗ рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ Microsoft рдХрд┐рд╕ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИред рд╣рдорд╛рд░рд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдХрд╛ рдкреВрд░реНрдг рдЕрд▓рдЧрд╛рд╡ред
- рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдФрд░ рд╡рд░реНрдЧ рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрди рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рди рд╣реЛ, рдЬрд┐рдирдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд░реНрдЧ рд╣реИред
- рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
- рдХрдИ рдмрд╛рд░, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рд▓реЙрдиреНрдЪ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
- рдпреВрдирд┐рдЯ рд▓реЙрдЬрд┐рдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╕реИрдХрдбрд╝реЛрдВ рдпрд╛ рджреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрддрди рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- рдЬрдЯрд┐рд▓ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдзрд┐ рдкрд░реАрдХреНрд╖рдг
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╣ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рд▓рдХреНрд╖реНрдп рд╣реИрдВ, рддреЛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдпрд╣ рдереЛрдбрд╝рд╛ рддрд╛рдЬрд╝рд╛ рд╣реИред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ - рдЖрдк рдЕрдЧрд▓реЗ
рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?
- рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдХ рдЗрдХрд╛рдИ (рдпрд╛ рдХрдИ рдЗрдХрд╛рдЗрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ) рдЪрд╛рд▓реВ рд╣реИред
- рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рддрд░реНрдХ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг - рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рдЗрдХрд╛рдИ рдХреИрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ - рдмрд╕ рдЗрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝реЗрдВред
- рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛ рд╕рд░рд▓реАрдХрд░рдг - рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
- рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕реБрдзрд╛рд░ рдХреЗ рдХрд╛рд░рдг рдмрдЧрдлрд┐рдХреНрд╕ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдирд╛ред рдкреНрд░рддрд┐рдЧрдорди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ред
рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ
- рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХрдХреНрд╖рд╛ рдХреЛрдб рдХреА рдиреНрдпреВрдирддрдо рдорд╛рддреНрд░рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрдереЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
- рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд╣рд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреА рддреИрдпрд╛рд░реА)ред
- рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕реНрд╡-рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдПрдХ рдмрд╛рд╣рд░реА рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрдврд╝рдХрд░ рдЗрдХрд╛рдИ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛
- рдкрд░реАрдХреНрд╖рдг рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЗрди рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рджрд░реНрдЬрди рднрд░ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
- рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкрддрди рддрд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ
- рдкрд░реАрдХреНрд╖рдг рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо (рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░, рд╡реЗрдм рд╕рд░реНрд╡рд░, рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, рдмрд╛рд╣рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ) рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рдпрд╣ рдЗрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдиреНрдпреВрдирддрдо рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрддрдо рдХреЛрдб рдХрд╡рд░реЗрдЬ
рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВ
- рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ - рдмрдбрд╝реЗ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рд╕реЗрдЯ рдмрдирд╛рдирд╛, рд╕рд░реНрд╡рд░ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдирд╛, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди, рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрджрд┐ред
- рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдЬрдЯрд┐рд▓рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рд╡рд░реНрдЧ рдЕрдиреНрдп рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдХрд╛рдо рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдХ рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИ, рдЬреЛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ - рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЧрд┐рд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛ 100% рдХрд╡рд░реЗрдЬ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдХрдард┐рдирд╛рдИ (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЖрд▓рд╕реНрдп рдФрд░ рдкрд╣рд▓реА рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИ)
- рдкрд╣рд▓реЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ (рдбрд┐рдмрдЧрд┐рдВрдЧ, рдлрд┐рдХреНрд╕рд┐рдВрдЧ) рдХреА рдЬрдЯрд┐рд▓рддрд╛ред
- рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЫрд┐рдкреЗ рд╣реБрдП рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ (рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЛ рдЫреЛрдбрд╝рдХрд░), рдкрд░реАрдХреНрд╖рдг рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ред
- рдЕрдХреНрд╕рд░, рдкрд░реАрдХреНрд╖рдг рдЧрд┐рд░рд╛рд╡рдЯ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдХрд╛рдИ рдХреЗ рддрд░реНрдХ (рдФрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдП рдЧрдП) рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдкрдХреЛ рдЧрд▓рдд рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реЛрдЧрд╛ред
- рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп - рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрдирдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрди рд╣реИ - (рдЗрдХрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдИ), рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рддреЗ рд╣реИрдВ, рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдордп рдХреЛ рдШрдВрдЯреЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рдмрд┐рддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ-рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкрд░реАрдХреНрд╖рдг / рд▓реЗрдЦрди, рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЖрджрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╕рдВрдмрджреНрдз рддрд░реНрдХ рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рд╣реИ, рдЬреЛ рд╕реАрдзреЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред
рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЯреВрд▓рдХрд┐рдЯред
рдлрд┐рд▓рд╣рд╛рд▓, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЬрдиреЛрдВ (рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ, рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯ, рдлрд╝рдВрдХреНрд╢рдирд▓ рдЯреЗрд╕реНрдЯ, рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯ) рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреМрдЦрдЯреЗ (NUnit, JUnit, DUnit, xUnit, MSTest) рдореМрдЬреВрдж рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рдкреВрд░реНрдг рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рддрд░реНрдХ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдкреВрд░реНрдг рдЕрд▓рдЧрд╛рд╡ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЯреНрд░рд┐рдХреЛрдВ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдмрд╛рджрд▓ рдмрдирд╛рдирд╛, рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдФрд░ рдпрд╣рд╛рдВ рдЕрд▓рдЧрд╛рд╡ рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ Microsoft рдореЛрд▓реНрд╕ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
Microsoft.Moles рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВ рдЙрди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореЛрд▓реНрд╕ рд╣рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдХрдард┐рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдЗрд╕рдореЗрдВ рдореЛрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдерд╛)ред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ FileUpdater рд╡рд░реНрдЧ рд╣реИ, рдПрдХрдорд╛рддреНрд░ UpdateFileFromService (string fileId) рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╣реИ, рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рдлрд╝рд╛рдЗрд▓ hasha рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, UpdateFileFromService рд╡рд┐рдзрд┐ рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП FileManager рдФрд░ StorageService рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ FileManager рдФрд░ StorageService рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджреЗрддрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред
public class FileUpdater
{
private StorageService storageService;
public StorageService Service
{
get
{
if (storageService == null )
{
storageService = new StorageService();
}
return storageService;
}
}
public void UpdateFileFromService( string fileId)
{
if ( string .IsNullOrEmpty(fileId))
{
throw new Exception( "fileId is empty" );
}
var fileManager = new FileManager();
string localFileHash = fileManager.GetFileHash(fileId);
string remoteFileHash = Service.GetFileHash(fileId);
if (localFileHash != remoteFileHash)
{
FileStream file = Service.DownloadFile(fileId);
fileManager.SaveFile(fileId, remoteFileHash, file);
}
}
}
public class FileManager
{
public string GetFileHash( string fileId)
{
throw new NotImplementedException();
}
public void SaveFile( string fileId, string remoteFileHash, FileStream file)
{
throw new NotImplementedException();
}
}
public class StorageService
{
public string GetFileHash( string fileId)
{
throw new NotImplementedException();
}
public FileStream DownloadFile( string fileId)
{
throw new NotImplementedException();
}
}
* This source code was highlighted with Source Code Highlighter .
UpdateFileFromService рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕реНрдХрд░рдг
рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ :
- fileId - рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ
- рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рдлрд╝рд╛рдЗрд▓ рд╣реИрд╢ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ
- рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рдлрд╝рд╛рдЗрд▓ рд╣реИрд╢ рд╕рдорд╛рди рд╣реИрдВ
рд╣рдо рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓рдЕрдкрдбреЗрдЯ рд╢реНрд░реЗрдгреА рдХреЗ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдирдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдЖрдЗрдП Microsoft.Moles рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ 2 рдФрд░ 3 рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рдорд╛рдирдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рд╛рдердорд┐рдХ рд╣реИред
рдореЛрд▓ рдФрд░ рд╕реНрдЯрдм рдХреНрд▓рд╛рд╕ рдЬрдирд░реЗрд╢рди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрд▓реЗрдб рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рддрд░реНрдХ рд╣рдо рдХрд╕реНрдЯрдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ (рдЕрдиреНрдпрдерд╛ рд╕реНрдЯрдм рд╡рд┐рдзрд┐рдпреЛрдВ) рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВрдЧреЗред рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдореЛрд▓ред Exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ Microsoft.Moles рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрдирд╛ рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде Visual Studio 2010/2010 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рд╣рдо рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Microsoft.Moles рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрджрд░реНрдн рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдЖрдЗрдЯрдо
"рдРрдб рдореЛрд▓реНрд╕ рдЕрд╕реЗрдВрдмрд▓реА" рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ (рдЪрд┐рддреНрд░ 1)ред

ClassLibrary1 рдЕрд╕реЗрдВрдмрд▓реА рдкрд░ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ
ClassLibrary1.moles рдлрд╝рд╛рдЗрд▓реЛрдВ (рдЫрд╡рд┐ 2) рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдореВрд╣ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ ClassLibrary1.moles рдлрд╝рд╛рдЗрд▓ рдореЛрд▓рдб рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рд╡рд░рдгрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреА рдкреАрдврд╝реА рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЗрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╛рдХреА рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рд▓реНрдб рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

Microsoft.Moles рдЖрдкрдХреЛ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рд╕реНрдЯрдмреНрд╕ рдФрд░ рдореЛрд▓реНрд╕ред
- рд╕реНрдЯрдм рдПрдХ рд╣рд▓реНрдХрд╛ рдЕрд▓рдЧрд╛рд╡ рдврд╛рдВрдЪрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдореВрд░реНрдд, рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдФрд░ рд╕рджрд╕реНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рддрд╛ рд╣реИред рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдпрд╛ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ
- рдореЛрд▓ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреЙрд▓ рд░рд┐рдбрд╛рдпрд░реЗрдХреНрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЛрдб рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЙрд▓ рдХреЛ рдПрдХ рдирдХрд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рджрд╕реНрдп рдХреЛ рдХреЙрд▓ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдереЗ, рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реБрдИред
рдЕрд╕реЗрдВрдмрд▓реА ClassLibrary1.Moles.dll рдЙрди рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП M M рдХреНрд▓рд╛рд╕ ClassName% рдФрд░ S% ClassName% рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреЛрдбрд╝рд┐рдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЕрд╕реЗрдВрдмрд▓реА ClassLibrary1.dll рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЬрд╣рд╛рдВ:
- M% ClassName% - рддрд┐рд▓ рд╡рд░реНрдЧ
- S% ClassName% - рд╕реНрдЯрдм рдХреНрд▓рд╛рд╕
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ
ClassLibrary1.moles рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдХреЗ, рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЛрд▓реНрд╕ рдпрд╛ рд╕реНрдЯрдмреНрд╕ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ (рдЬреЛ рдкреАрдврд╝реА рдХреЗ рд╕рдордп рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрдВрдЧреЗ) рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдореЛрд▓реНрд╕ рдпрд╛ рд╕реНрдЯрдмреНрд╕ рдХреА рдкреАрдврд╝реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдп рд╕реЗрдЯ рдХрд░реЗрдВред рдкреАрдврд╝реА рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ (Intellisence рдЖрдкрдХреЛ рдорд╛рдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреА рдПрдХ рд╕реВрдЪреА рдмрддрд╛рдПрдЧрд╛)ред рдЬрдм рдЖрдк moles.exe рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЬреЗрдирд░реЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк ClassLibrary1.moles
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛ moles.exe рдЪрд▓рд╛рдХрд░ moles.exe рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рддрд┐рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЪреВрдВрдХрд┐ рдореЛрд▓реНрд╕ рдФрд░ рд╕реНрдЯрдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рдФрд░ рд▓реЗрдЦ Microsoft.Moles рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рд╣рдо рдХреЗрд╡рд▓ рдореЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рддреБрд░рдВрдд рдЙрддреНрдкрдиреНрди рддрд┐рд▓ рдФрд░ рд╕реНрдЯрдм рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ - рдкрд╣рд▓реЗ рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рдХрд╛ рдирд╛рдо рдЖрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд╛рд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
MFileManager.AllInstances.GetFileHashString FileManager.GetFileHash (string fileId) рд╡рд┐рдзрд┐ рдХреЛ
рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдЧреБрдг рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢реИрд▓реА рдЕрддрд┐рднрд╛рд░рд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╕рджрд╕реНрдпреЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред
рдореЛрд▓ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИ:
- рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдирд╛
MFileManager.AllInstances.GetFileHashString = (fileManager, fileId) =>
{
// GetFileHash(string fileId) FileManager
return Guid .NewGuid().ToString();
};
* This source code was highlighted with Source Code Highlighter .
рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдФрд░ рд╕реНрдерд┐рд░ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ AllInstances рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ред
- рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдмрджрд▓рдирд╛
var storageServiceMole = new MStorageService();
storageServiceMole.GetFileHashString = (fileId) =>
{
// GetFileHash(string fileId) storageService StorageService
return testRemoteHash;
};
var storageService = storageServiceMole.Instanc
* This source code was highlighted with Source Code Highlighter .
рдпрд╛ рддреЛ, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреНрдб рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд╕рд╛рде
var storageService = new StorageService();
var storageServiceMole = new MStorageService(storageService);
storageServiceMole.GetFileHashString = (fileId) =>
{
// GetFileHash(string fileId) storageService StorageService
return testRemoteHash;
};
* This source code was highlighted with Source Code Highlighter .
- рдХрдХреНрд╖рд╛ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдореЛрд▓ рд╡рд░реНрдЧ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмрджрд▓рдирд╛ред
MFileUpdater.Constructor = (@ this ) =>
{
var mole = new MFileUpdater(@ this );
mole.ServiceGet = (x) => initializedServiceInstance;
};
* This source code was highlighted with Source Code Highlighter .
- рдХрдХреНрд╖рд╛ рдХреЗ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрдЧреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рдпрджрд┐ рдЖрдкрдХреЛ рдореВрд▓ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдиреЛрдВ рдХреА рдХреБрдЫ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
var fileUpdaterMole = new MFileUpdater() { InstanceBehavior = MoleBehaviors.Fallthrough };
fileUpdaterMole.UpdateFileFromServiceString = (y) =>
{
fileUpdaterMole.UpdateFileFromServiceString = null ; //
fileUpdaterMole.Instance.UpdateFileFromService(y); // FileUpdater.UpdateFileFromService
};
fileUpdaterMole.Instance.UpdateFileFromService( Guid .NewGuid().ToString());
* This source code was highlighted with Source Code Highlighter .
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд▓реИрдореНрдмреНрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ, рдЖрдк рдЖрдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдПрд╕реНрдЯрд░ рдЪреЗрдХ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкрд░рд┐рдгрд╛рдо рдХреА рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде рдЪрдкрд▓рддрд╛ред
InstanceBehavior
рдпрд╣ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рддрд┐рд▓ рдЙрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ InstanceBehavior рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдирд┐рдореНрди рдорд╛рди рд▓реЗ рд╕рдХрддреА рд╣реИ
- MoleBehaviors.DefaultValue - рд╡рд░реНрдЧ рдХреЗ рдЕрдирд╕реБрдЪрд┐рдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдПрдХ рдЦрд╛рд▓реА рдкреНрд░рддрд┐рдирд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд▓реМрдЯреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛
var storageService = new StorageService();
var storageServiceMole = new MStorageService(storageService) { InstanceBehavior = MoleBehaviors.DefaultValue };
// null;
var result = storageService.GetFileHash( Guid .NewGuid().ToString());
* This source code was highlighted with Source Code Highlighter .
- MoleBehaviors.NotImplemented - рдЬрдм рдХрд┐рд╕реА рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╕рджрд╕реНрдп рддрдХ рдкрд╣реБрдБрдЪ рд╣реЛ, рддреЛ NotImplementedException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
var storageService = new StorageService();
var storageServiceMole = new MStorageService(storageService) { InstanceBehavior = MoleBehaviors.NotImplemented };
// NotImplementedException
storageService.GetFileHash( "328576BA-7345-4847-84AC-170EF03FFA7A" );
* This source code was highlighted with Source Code Highlighter .
- MoleBehaviors.Fallthrough - рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рд╡рд░реНрдЧ рдореЗрдВ рдЙрдирдХреЗ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
var storageService = new StorageService();
var storageServiceMole = new MStorageService() {InstanceBehavior = MoleBehaviors.Fallthrough};
// StorageService.GetFileHash(string fileId)
storageService.GetFileHash( "328576BA-7345-4847-84AC-170EF03FFA7A" );
* This source code was highlighted with Source Code Highlighter .
- MoleBehaviors.Current - рдореЛрд▓ рд╡рд░реНрдЧ рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рджрд╕реНрдп рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ MoleNotImplementedException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
var storageService = new StorageService();
var storageServiceMole = new MStorageService() {InstanceBehavior = MoleBehaviors.Current};
// MoleNotImplementedException
storageService.GetFileHash( "328576BA-7345-4847-84AC-170EF03FFA7A" );
* This source code was highlighted with Source Code Highlighter .
- MoleBehaviors.CurrentProxy рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ
var storageService = new StorageService();
var storageServiceMole1 = new MStorageService(storageService) { InstanceBehavior = MoleBehaviors.NotImplemented };
storageServiceMole1.GetFileHashString = (fileId) =>
{
return Guid .NewGuid().ToString();
};
var storageServiceMole2 = new MStorageService(storageService) { InstanceBehavior = MoleBehaviors.CurrentProxy };
storageServiceMole2.DownloadFileString = (fileId) =>
{
return testFileStream;
};
// storageServiceMole1.GetFileHashString
storageService.GetFileHash( "328576BA-7345-4847-84AC-170EF03FFA7A" );
// storageServiceMole2.GetFileHashString
storageService.DownloadFile( "328576BA-7345-4847-84AC-170EF03FFA7A" );
* This source code was highlighted with Source Code Highlighter .
- рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди - рдпрджрд┐ рдЖрдк IMoleBehavior рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рд╕рдВрднрд╡ рд╣реИ
рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг
рдпрд╣рд╛рдВ рд╕реНрдерд┐рддрд┐ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реАрдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╣реИрд╢ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред
///
/// ,
///
[TestMethod]
[HostType( "Moles" )]
public void TestUpdateFileNonMatchedHash()
{
var callOrder = 0; //
var testFileId = Guid .NewGuid().ToString();
var testLocalHash = Guid .NewGuid().ToString();
var testRemoteHash = Guid .NewGuid().ToString();
var testFileStream = new FileStream ( @"c:\testfile.txt" , FileMode .OpenOrCreate);
var storageServiceMole = new MStorageService() { InstanceBehavior = MoleBehaviors.Fallthrough };
// GetFileHash StorageService
storageServiceMole.GetFileHashString = (fileId) =>
{
Assert.AreEqual(1, callOrder++); //
Assert.AreEqual(testFileId, fileId);
Assert.AreNotEqual(testLocalHash, testRemoteHash);
return testRemoteHash;
};
storageServiceMole.DownloadFileString = (fileId) =>
{
Assert.AreEqual(2, callOrder++);
Assert.AreEqual(testFileId, fileId);
return testFileStream;
};
// FileManager.
//MFileManager.AllInstances FileManager UpdateFile
// ,
// FileManager
MFileManager.AllInstances.GetFileHashString = (fileManager, fileId) =>
{
Assert.AreEqual(0, callOrder++);
Assert.AreEqual(testFileId, fileId);
return Guid .NewGuid().ToString();
};
MFileManager.AllInstances.SaveFileStringStringFileStream = (fileManager, fileId, fileHash, fileStream) =>
{
Assert.AreEqual(3, callOrder++);
Assert.AreEqual(testFileId, fileId);
Assert.AreEqual(testRemoteHash, fileHash);
Assert.AreSame(testFileStream, fileStream);
};
var fileUpdaterMole = new MFileUpdater
{
InstanceBehavior = MoleBehaviors.Fallthrough,
// getter FileUpdater.Service , moled StorageService
ServiceGet = () => storageServiceMole.Instance
};
var fileUpdater = fileUpdaterMole.Instance;
fileUpdater.UpdateFileFromService(testFileId);
}
* This source code was highlighted with Source Code Highlighter .
рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП - рдЬрдм рд╣реИрд╢ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА
- рдмрд╣реБ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рддрд┐рд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ mscorlib рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- Microsoft.Moles рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреЗрд╕реНрдЯ рдореЛрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП - MSTest рдХреЗ рд▓рд┐рдП, рдпрд╣ HostType ("Moles") рдЯреЗрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЧреБрдг рд╣реИред рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рдврд╛рдБрдЪреЛрдВ рдХреЗ рд▓рд┐рдП, moles.runner.exe (nunit рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ moles.runner.exe "yourTestDLLame" /runner: nunit -console.exe рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджрд┐рдЦреЗрдЧрд╛ред рддрджрдиреБрд╕рд╛рд░, GUI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рднреА рджреМрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдореЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
- рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд╛рдВрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛ рдореЛрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╣реИрдВ
< target name ="runTests" >
< exec basedir ="${build.dir.unittests}" program ="${microsoft.moles.dir}moles.runner.exe" >
< arg value ="/Runner:${nunit.console.dir}nunit-console.exe" ></ arg >
< arg value ="${build.dir.unittests}My.UnitTests.dll" ></ arg >
</ exec >
</ target >
* This source code was highlighted with Source Code Highlighter .
рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛, рдЕрдЧрд░ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЬрд╛рдП рддреЛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
Microsoft рдореЛрд▓реНрд╕ рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓NUnit, NAnt рдФрд░ .NET 3.5 рдХреЗ рд╕рд╛рде MS рдореЛрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛MSDN - рдореЛрд▓реНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ