Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ

Моки ΠΈ явныС ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹

НавСрноС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ, ΠΊΡ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡŽΠ½ΠΈΡ‚ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты, сталкивался с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ злоупотрСблСния ΠΌΠΎΠΊΠ°ΠΌΠΈ, которая ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌ тСстам. ПослСдниС, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Ρƒ программиста Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ тСсты Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

НиТС прСдставлСн Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ JosΓ© Valim β€” ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ языка Elixir β€” высказал своё ΠΌΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ использования ΠΌΠΎΠΊΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ я ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн.

НСсколько Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄ я подСлился своими мыслями ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΌΠΎΠΊΠΎΠ² Π² Twitter:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ

Мок β€” ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт Π² тСстировании, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ тСстовыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ приводят ΠΊ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ этим инструмСнтом. НиТС ΠΌΡ‹ рассмотрим Π»ΡƒΡ‡ΡˆΠΈΠΉ способ использования ΠΌΠΎΠΊΠΎΠ².

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ?

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· англоязычной Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ: ΠΌΠΎΠΊ β€” настраиваСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π― сдСлаю Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° этом ΠΏΠΎΠ·ΠΆΠ΅, Π½ΠΎ для мСня ΠΌΠΎΠΊ β€” это всСгда ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π° Π½Π΅ Π³Π»Π°Π³ΠΎΠ» [для наглядности, Π³Π»Π°Π³ΠΎΠ» mock Π²Π΅Π·Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ «Π·Π°ΠΌΠΎΠΊΠ°Ρ‚ΡŒ» β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².].

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ внСшнСго API

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим стандартный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ: внСшнСС API.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Twitter API Π² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Phoenix ΠΈΠ»ΠΈ Rails. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСнаправляСтся Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π΄Π΅Π»Π°Π΅Ρ‚ запрос ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ API. Π’Ρ‹Π·ΠΎΠ² внСшнСго API происходит прямо Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅:

Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… частях прилоТСния ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ прохоТдСния ΡŽΠ½ΠΈΡ‚ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов. ВрСмя Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС?

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΊ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅, измСняСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒ глобально, Π²Ρ‹ большС Π½Π΅ смоТСтС Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эти тСсты Π² Elixir ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ.

РСшСниС

Π’ Elixir всС прилоТСния ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для ΠΈΡ… чтСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Twitter’a для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ. Код ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ настройки для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ:

БСйчас ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Twitter для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ. Sandbox ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Ссли Twitter прСдоставляСт ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ sandbox для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Наша замоканная вСрсия HTTPClient позволяла ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… HTTP-запросов. РСализация этой ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС:

Код получился простым ΠΈ чистым, Π° сильной внСшнСй зависимости ΠΎΡ‚ HTTPClient большС Π½Π΅Ρ‚. MyApp.Twitter.InMemory являСтся ΠΌΠΎΠΊΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΈ для Π΅Π³ΠΎ создания Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ!

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ явных ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²

Мок ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ эффСктивСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ явно. Π˜Π½Π°Ρ‡Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² ситуации, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΊ Π½Π°Ρ‡Π½Π΅Ρ‚ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ всС слоТнСС, увСличивая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ тСстируСмыми ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π‘Π΅Π· явного ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ слоТно.

ΠœΡ‹ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΠΌ Ρ‚Ρ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Twitter API ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ явными. Π’ Elixir ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ явный ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ behaviour:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ @behaviour MyApp.Twitter Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ этот ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, ΠΈ Elixir ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ API.

Π’ Elixir ΠΌΡ‹ полагаСмся Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ behaviours постоянно: ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Plug, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ecto, ΠΊΠΎΠ³Π΄Π° тСстируСм Phoenix channels ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ВСстированиС Π³Ρ€Π°Π½ΠΈΡ†

Π‘Π½Π°Ρ‡Π°Π»Π°, ΠΊΠΎΠ³Π΄Π° явныС ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ отсутствовали, Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ прилоТСния выглядСли Ρ‚Π°ΠΊ:

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ HTTPClient ΠΌΠΎΠ³Π»ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ падСнию ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов. БСйчас ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° рСализация этого ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с HTTP:

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ тСстирования Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ‚ΠΊΠΈΡ… Π³Ρ€Π°Π½ΠΈΡ† ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Блишком высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции ΠΏΡ€ΠΈ отсутствии ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов сдСлаСт тСсты Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌΠΈ, Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° production. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ врСмя прохоТдСния тСстов ΠΈ сдСлаСт тСсты слоТными Π² сопровоТдСнии. ЕдинствСнного Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅Ρ‚, ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ увСрСнности ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ².

Π›ΠΈΡ‡Π½ΠΎ я Π±Ρ‹ протСстировал MyApp.Twitter.HTTP Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Twitter API, запуская эти тСсты ΠΏΠΎ-нСобходимости Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. БистСма Ρ‚Π΅Π³ΠΎΠ² Π² ExUnit β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ для тСстирования Π² Elixir β€” Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:

Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΠΌ тСсты с Twitter API:

ΠŸΡ€ΠΈ нСобходимости Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΈΡ… Π² ΠΎΠ±Ρ‰ΠΈΠΉ тСстовый ΠΏΡ€ΠΎΠ³ΠΎΠ½:

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ:

ВмСсто создания ΠΌΠΎΠΊΠ° HTTPClient ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ dummy-сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Twitter API. bypass β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π² этом ΠΏΠΎΠΌΠΎΡ‡ΡŒ. ВсС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ со своСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π― Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚ практичСски Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ обсуТдСнии ΠΌΠΎΠΊΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ «Ρ‚СстируСмого» ΠΊΠΎΠ΄Π°

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ production-ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ «Ρ‚СстируСмым», Π½ΠΎ создаСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ прилоТСния Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ? НаличиС Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ овСрхэда, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ «Ρ‚СстируСмым», Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π― Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ ΠΎ создании «Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ» ΠΊΠΎΠ΄Π°, Π° ΠΎΠ± ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π° [ΠΎΡ‚ Π°Π½Π³Π». design of your code β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².].

ВСст β€” это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вашСго API, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅. Одна ΠΈΠ· ΠΈΠ΄Π΅ΠΉ TDD Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ тСсты β€” это ΠΊΠΎΠ΄ ΠΈ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠΎΠ΄Π°. Если Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅: «Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ тСстируСмым», это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ» ΠΈΠ»ΠΈ «Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π΅ (интСрфСйсС) этих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²».

НСт Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ Π² Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. НапримСр, Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с URI [имССтся Π²Π²ΠΈΠ΄Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ URI для Elixir β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².]. Но Ссли ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ слоТном, ΠΊΠ°ΠΊ внСшнСС API, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ явного ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ возмоТности Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этого ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° сдСлаСт ваш ΠΊΠΎΠ΄ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈ простым Π² сопровоТдСнии.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, овСрхэд ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ конфигурация Elixir-прилоТСния хранится Π² ETS, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ вычитываСтся прямо ΠΈΠ· памяти.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΊΠΈ

Π₯отя ΠΌΡ‹ ΠΈ использовали ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ прилоТСния для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с внСшним API, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. НапримСр, нСкоторая функция выполняСт Π΄ΠΎΠ»Π³ΠΈΠ΅ вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² тСстах:

МоТно ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ зависимости, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅Ρ‘ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

ВСст Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Или, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ описано Ρ€Π°Π½Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ:

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ data structure ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ protocol.

Мок β€” это ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅

Π›ΡƒΡ‡ΡˆΠ΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΌΠΎΠΊΠ°Ρ… ΠΊΠ°ΠΊ ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΊΠ°Ρ‚ΡŒ API (ΠΌΠΎΠΊΠ°Ρ‚ΡŒ β€” Π³Π»Π°Π³ΠΎΠ»), Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠΊ (ΠΌΠΎΠΊ β€” ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ API.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для создания ΠΌΠΎΠΊΠΎΠ²

ПослС ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос: «ΠΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для создания ΠΌΠΎΠΊΠΎΠ²?»

ВсС зависит ΠΎΡ‚ ситуации. Если Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ вас Π½Π° ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρƒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΈΠ»ΠΈ Π½Π° использованиС ΠΌΠΎΠΊΠΎΠ² Π² качСствС Π³Π»Π°Π³ΠΎΠ»ΠΎΠ²), ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρƒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ описанных Π²Ρ‹ΡˆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» создания ΠΌΠΎΠΊΠΎΠ², Ρ‚ΠΎ Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Ρ‘.

Однако, Π΅ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для создания ΠΌΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ вас Π½Π° использованиС описанных Π²Ρ‹ΡˆΠ΅ Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ «ΠΌΠΎΠΊ-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹» ΠΈΠ»ΠΈ «ΠΌΠΎΠΊ-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ систСму Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ количСствС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠΎΠΊΠ° ΠΈ ΠΎ Ρ‚ΠΎΠΌ, с ΠΊΠ°ΠΊΠΈΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Одна ΠΈΠ· Π·Π°Π΄Π°Ρ‡ тСстирования систСмы β€” Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² ΠΈ Π³Ρ€Π°Π½ΠΈΡ† ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. ИспользованиС ΠΌΠΎΠΊΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС наличия явного ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ:

Π―Π²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ зависимостСй Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ присутствуСт Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, поэтому всСгда ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‘ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ явной, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Московский ΠšΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹ΠΉ Π‘Π°Π½ΠΊ

ПАО «Московский ΠšΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹ΠΉ Π‘Π°Π½ΠΊΒ» β€” ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… систСмно Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ России. Π’Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚ΠΎΠΏ-10 Π±Π°Π½ΠΊΠΎΠ² страны ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ².

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π½Π°Ρ‡Π°Π»Π° свою Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² 1992 Π³ΠΎΠ΄Ρƒ. Π’ 1994 Π³ΠΎΠ΄Ρƒ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΊΡƒΠΏΠ»Π΅Π½Π° бизнСсмСном Π ΠΎΠΌΠ°Π½ΠΎΠΌ АвдССвым. Π’ настоящСС врСмя Π΅Π³ΠΎ доля Π² ΠΊΠ°ΠΏΠΈΡ‚Π°Π»Π΅ Π±Π°Π½ΠΊΠ° составляСт 50,52%. ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π°ΠΊΡ†ΠΈΠΉ распрСдСлСна ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ физичСскими ΠΈ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ Π»ΠΈΡ†Π°ΠΌΠΈ, доля ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 10%.

Π§Π΅Ρ€Π΅Π· мСсяц послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Π°Π½ΠΊΠ° Π² список систСмно Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ России, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π² октябрС 2017 Π³ΠΎΠ΄Π°, компания Β«Π ΠΎΡΠ½Π΅Ρ„Ρ‚ΡŒΒ» прСдоставила Π΅ΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚ субординированных Π΄Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΠ² Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ сумму 22 ΠΌΠ»Ρ€Π΄ Ρ€ΡƒΠ±Π»Π΅ΠΉ Π½Π° срок 49 Π»Π΅Ρ‚. Π’ этом ΠΆΠ΅ Π³ΠΎΠ΄Ρƒ, ΠΏΠΎ вСрсии экономичСского ΠΆΡƒΡ€Π½Π°Π»Π° The Banker, ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ вошло Π² Ρ‚ΠΎΠΏ-10 ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… финансовых структур Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ Восточной Π•Π²Ρ€ΠΎΠΏΡ‹ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ собствСнных срСдств. Π‘Ρ€Π΅Π΄ΠΈ российских ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ 2018 Π³ΠΎΠ΄Π° ΠΆΡƒΡ€Π½Π°Π» Global Finance ΠΏΡ€ΠΈΠ·Π½Π°Π» ΠœΠšΠ‘ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π±Π°Π½ΠΊΠΎΠΌ.

Π’ ΠΌΠ°Π΅ 2020 Π³ΠΎΠ΄Π° ΠœΠšΠ‘ сообщил ΠΎ ΠΏΠΎΠΊΡƒΠΏΠΊΠ΅ Π±Π°Π½ΠΊΠ° «ВСста» ΠΈ Руснарбанка, Π²Ρ…ΠΎΠ΄ΠΈΠ²ΡˆΠΈΡ… Π² Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Β«Π Π΅Π³ΠΈΠΎΠ½Β». ΠœΠšΠ‘ пояснил, Ρ‡Ρ‚ΠΎ сдСлки Π±Ρ‹Π»ΠΈ осущСствлСны Π² Ρ€Π°ΠΌΠΊΠ°Ρ… стратСгичСского партнСрства ΠΊΠΎΠ½Ρ†Π΅Ρ€Π½Π° «Россиум» Π ΠΎΠΌΠ°Π½Π° АвдССва ΠΈ Π“Πš Β«Π Π΅Π³ΠΈΠΎΠ½Β» БСргСя Π‘ΡƒΠ΄Π°Ρ€ΠΈΠΊΠΎΠ²Π°. Об ΠΈΡ… Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π±Ρ‹Π»ΠΎ объявлСно.

По Π΄Π°Π½Π½Ρ‹ΠΌ финансовой отчСтности Π½Π° 1 апрСля 2020 Π³ΠΎΠ΄Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅Ρ‚Ρ‚ΠΎ-Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ составил 2,9 Ρ‚Ρ€Π»Π½ Ρ€ΡƒΠ±Π»Π΅ΠΉ (7-Π΅ мСсто срСди Π±Π°Π½ΠΊΠΎΠ² России), ΠΊΠ°ΠΏΠΈΡ‚Π°Π»Π° β€” 275,5 ΠΌΠ»Ρ€Π΄ Ρ€ΡƒΠ±Π»Π΅ΠΉ, накоплСнная чистая ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ β€” 8,4 ΠΌΠ»Ρ€Π΄ Ρ€ΡƒΠ±Π»Π΅ΠΉ. ΠšΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ (1,98 Ρ‚Ρ€Π»Π½ Ρ€ΡƒΠ±Π»Π΅ΠΉ) Π² основном прСдставлСн ΠΊΡ€Π΅Π΄ΠΈΡ‚Π°ΠΌΠΈ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π»ΠΈΡ† (1,8 Ρ‚Ρ€Π»Π½ Ρ€ΡƒΠ±Π»Π΅ΠΉ).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ направлСниями бизнСса ΠœΠšΠ‘ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ²Π°Π½ΠΈΠ΅, РКО ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ срСдств насСлСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±Π°Π½ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠΏΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π°Π²Ρ‚ΠΎΠΊΡ€Π΅Π΄ΠΈΡ‚Ρ‹, ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ ΠΈ Π΄Ρ€.

Π‘Π΅Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ насчитываСт Π±ΠΎΠ»Π΅Π΅ 150 ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΉ. ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ доступны порядка 500 Π±Π°Π½ΠΊΠΎΠΌΠ°Ρ‚ΠΎΠ² ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ услуги, ΠΏΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹ Β«Π’Ρ€ΠΎΠΉΠΊΠ°Β», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ банковским ΠΊΠ°Ρ€Ρ‚Π°ΠΌ ΡΠ²Ρ‹ΡˆΠ΅ 10 партнСрских ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠΎΡΠΎΠ»ΡŒΡΡ‚Π²ΠΎ России ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ ΠΎΡ‚ МОК ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ с «украинским» ΠšΡ€Ρ‹ΠΌΠΎΠΌ

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ

ΠŸΠΎΡΠΎΠ»ΡŒΡΡ‚Π²ΠΎ России Π² Π―ΠΏΠΎΠ½ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ ΠΊ ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΌΡƒ олимпийскому ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Ρƒ с Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠšΡ€Ρ‹ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² состав Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹. Об этом говорится Π² сообщСнии, Π² Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΌ Π½Π° страницС российской дипмиссии Π² Facebook.

Π’ ΠΏΠΎΡΠΎΠ»ΡŒΡΡ‚Π²Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ опубликованная Π½Π° сайтС ΠžΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Ρ‹ Π² Π’ΠΎΠΊΠΈΠΎ ΠΊΠ°Ρ€Ρ‚Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°, Π² связи с Ρ‡Π΅ΠΌ МОК слСдуСт Π΅Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

ΠšΡ€Ρ‹ΠΌ являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ, вопрос ΠΎ Π΅Π³ΠΎ принадлСТности ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ бСсповоротно Π·Π°ΠΊΡ€Ρ‹Ρ‚. Π˜ΡΡ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ МОК ΠΈ ΠΎΡ€Π³ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ токийской ΠžΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Ρ‹ внСсут Π² ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исправлСния, приводящиС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠšΡ€Ρ‹ΠΌΠ° Π² соотвСтствиС с ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€Π°Π²ΠΎΠ²ΠΎΠΉ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ

Β«Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ катастрофа».

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ Π±Π°Π½ΠΊ

Β«ΠœΡ‹ Π΅Π΄Π΅ΠΌ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ!Β»

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² дипвСдомствС Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠšΡ€Ρ‹ΠΌ вСрнулся Π² состав Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ свободного волСизъявлСния Π΅Π³ΠΎ ΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Π΄ΡƒΠΌΠ΅, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ соотвСтствии с ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ стандартами. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠŸΠΎΡΠΎΠ»ΡŒΡΡ‚Π²ΠΎ Π Π€ Π² Π―ΠΏΠΎΠ½ΠΈΠΈ рассчитываСт Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ МОК ΠΈ ΠΎΡ€Π³ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ токийской ΠžΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Ρ‹ исправят ΠΊΠ°Ρ€Ρ‚Ρƒ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π°

22 июля Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС ΠžΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Olympics Cheer Zone появилась ΠΊΠ°Ρ€Ρ‚Π° со странами, Π³Π΄Π΅ Π±ΠΎΠ»Π΅Π»ΡŒΡ‰ΠΈΠΊΠ°ΠΌ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ свою ΡΠ±ΠΎΡ€Π½ΡƒΡŽ «аплодисмСнтами»​​​.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π£ΠΊΡ€Π°ΠΈΠ½Π° ΠΈ ΠšΡ€Ρ‹ΠΌ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ. Π’ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° это ΠœΠ˜Π” Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹ ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠ» своСму ΠΏΠΎΡΠΎΠ»ΡŒΡΡ‚Π²Ρƒ Π² Π―ΠΏΠΎΠ½ΠΈΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ситуации.

Π”Π΅ΠΏΡƒΡ‚Π°Ρ‚ Госдумы Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π‘Π²ΠΈΡ‰Π΅Π² ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» ΠΊΠ°Ρ€Ρ‚Ρƒ Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹ Π±Π΅Π· ΠšΡ€Ρ‹ΠΌΠ° Π½Π° сайтС ΠžΠ»ΠΈΠΌΠΏΠΈΠΉΡΠΊΠΈΡ… ΠΈΠ³Ρ€ Π² Π’ΠΎΠΊΠΈΠΎ 2020.

ΠœΡ‹ привСтствуСм Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ МОК с ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠšΡ€Ρ‹ΠΌΠ° ΠΎΡ‚ Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹. Π­Ρ‚Π° тСрритория с 2014 Π³ΠΎΠ΄Π° Π½Π΅ являСтся украинской. БпортсмСны, ΠΏΡ€ΠΎΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΌ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π³Ρ€Π°ΠΆΠ΄Π°Π½Π°ΠΌΠΈ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ Ρ„Π»Π°Π³ΠΎΠΌ России. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ МОК, Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²Π°ΠΆΠ°Ρ‚ΡŒ всС

Однако линию вскорС ΡƒΠ±Ρ€Π°Π»ΠΈ, Π° Π² ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΌ олимпийском ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π΅ объяснили, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ·-Π·Π° ошибки ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°, которая Π±Ρ‹Π»Π° исправлСна сразу послС обнаруТСния, ΠΈ принСсли ΠšΠΈΠ΅Π²Ρƒ извинСния.

РСакция российских властСй

РСшСниС МОК ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ российскиС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ. ΠŸΡ€Π΅ΡΡ-ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π° Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ ПСсков заявил, Ρ‡Ρ‚ΠΎ отСчСствСнным Ρ‡ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°ΠΌ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° вопрос пСрСсмотра ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ олимпийским ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌ российских Π³Ρ€Π°Π½ΠΈΡ†.

Π”ΡƒΠΌΠ°ΡŽ, это ΠΏΠΎΠ²ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠΎΡΠΎΠ»ΡŒΡΡ‚Π²Ρƒ ΠΈ спортивным Ρ‡ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°ΠΌ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ вопросы

Π‘Π΅Π½Π°Ρ‚ΠΎΡ€ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ власти РСспублики ΠšΡ€Ρ‹ΠΌ Π‘Π΅Ρ€Π³Π΅ΠΉ Π¦Π΅ΠΊΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π» Ρ‚ΠΎΡ‡ΠΊΡƒ зрСния ПСскова. Он Π½Π°Π·Π²Π°Π» исправлСниС «ошибки» Π½Π° сайтС ΠžΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Ρ‹ Π½Π΅ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ заявил, Ρ‡Ρ‚ΠΎ МОК ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ интСрСсуСтся Π½ΠΈ историСй ΠšΡ€Ρ‹ΠΌΠ°, Π½ΠΈ историСй Ρ‚ΠΎΠΉ ΠΆΠ΅ самой Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹, Π½ΠΈ Ρ‚ΠΎΠΉ ситуациСй, которая Π±Ρ‹Π»Π° Π½Π° полуостровС Π΄ΠΎ 2014 Π³ΠΎΠ΄Π° ΠΈ особСнно Π²ΠΎ врСмя нахоТдСния рСспублики Π² составС Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹.

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠšΡ€Ρ‹ΠΌ являСтся Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠΌ России, ΠΈ Π΅Π³ΠΎ Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ β€” Π²Π΅Ρ‰ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ нСзыблСмая. Об этом Π½Π°Π΄ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ всСм, Π² Ρ‚ΠΎΠΌ числС Ρ‡ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°ΠΌ Олимпийского ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π°

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ mocks Π² ΡŽΠ½ΠΈΡ‚-тСстировании

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Β«When to MockΒ».

ИспользованиС ΠΌΠΎΠΊΠΎΠ² Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ тСстировании являСтся спорной Ρ‚Π΅ΠΌΠΎΠΉ. Автор ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π° протяТСнии всСй своСй ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ½ сначала ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» ΠΎΡ‚ ΠΌΠΎΠΊΠΎΠ² ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΊ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ Β«Π±Π΅Π· ΠΌΠΎΠΊΠΎΠ²Β», Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΊΠΈ для Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй».

Ни ΠΎΠ΄Π½Π° ΠΈΠ· этих ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Π½Π΅ являСтся достаточно Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π₯ΠΎΡ€ΠΈΠΊΠΎΠ² ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ зависимости слСдуСт ΠΌΠΎΠΊΠ°Ρ‚ΡŒ, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ Π² тСстах.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ mock (ΠΌΠΎΠΊ, ΠΎΡ‚ Π°Π½Π³Π». «пародия», «имитация»)?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ‚Π΅ΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΊΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΊ. Π›ΡŽΠ΄ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ тСстовый Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ (test double) ΠΈ ΠΌΠΎΠΊ (mock) ΠΊΠ°ΠΊ синонимы, Π½ΠΎ тСхничСски это Π½Π΅ Ρ‚Π°ΠΊ:

Мок – это лишь ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² Ρ‚Π°ΠΊΠΈΡ… зависимостСй.

Богласно Π–Π΅Ρ€Π°Ρ€Ρƒ ΠœΠ΅ΡΠ°Ρ€ΠΎΡˆΡƒ, сущСствуСт 5 Π²ΠΈΠ΄ΠΎΠ² тСстовых Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ²:

Π’Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡƒΠ³Π°ΡŽΡ‰ΠΈΠΌ, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ всС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы всСго Π² Π΄Π²Π° Ρ‚ΠΈΠΏΠ°: ΠΌΠΎΠΊΠΈ ΠΈ стабы.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя Ρ‚ΠΈΠΏΠ°ΠΌΠΈ сводится ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

Моки ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ исходящиС (outcoming) взаимодСйствия. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅ΠΌΡ‹Π΅ тСстируСмой систСмой (SUT) ΠΊ Π΅Π΅ зависимостям для измСнСния ΠΈΡ… состояния.

Π‘Ρ‚Π°Π±Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ входящиС (incoming) взаимодСйствия. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅ΠΌΡ‹Π΅ SUT ΠΊ Π΅Π΅ зависимостям для получСния Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π‘Π” являСтся входящим (incoming) взаимодСйствиСм β€” ΠΎΠ½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ±ΠΎΡ‡Π½ΠΎΠΌΡƒ эффСкту. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ тСстовый Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ являСтся стабом.

ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡΡ‚ΡŒΡŽ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ тСстовых Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

Spies (ΡˆΠΏΠΈΠΎΠ½Ρ‹) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΌΠΎΠΊΠΈ. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ spies ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° ΠΌΠΎΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… инструмСнтов. Иногда spies Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ рукописными ΠΌΠΎΠΊΠ°ΠΌΠΈ.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ стабами, dummy (ΠΏΡƒΡΡ‚Ρ‹ΡˆΠΊΠ°ΠΌΠΈ) ΠΈ Ρ„Π΅ΠΉΠΊΠ°ΠΌΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, насколько ΠΎΠ½ΠΈ ΡƒΠΌΠ½Ρ‹:

Π‘Ρ‚Π°Π± послоТнСС. Π­Ρ‚ΠΎ полноцСнная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ настраиваСтС для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Ρ€Π°Π·Π½Ρ‹Ρ… сцСнариСв.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠΊΠ°ΠΌΠΈ ΠΈ стабами (ΠΏΠΎΠΌΠΈΠΌΠΎ исходящих ΠΈ входящих взаимодСйствий). Моки ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ SUT ΠΈ Π΅Π³ΠΎ зависимостями, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ стабы ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти взаимодСйствия. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅.

Мок-ΠΊΠ°ΠΊ-инструмСнт vs. ΠΌΠΎΠΊ-ΠΊΠ°ΠΊ-тСстовый-Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ

Но Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΠΌΠΎΠΊ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° классы ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (для создания ΠΌΠΎΠΊΠΎΠ²) ΠΊΠ°ΠΊ Π½Π° ΠΌΠΎΠΊΠΈ. Π­Ρ‚ΠΈ классы ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ настоящиС ΠΌΠΎΠΊΠΈ, Π½ΠΎ сами ΠΏΠΎ сСбС ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ:

Π’Π°ΠΆΠ½ΠΎ Π½Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΊ-ΠΊΠ°ΠΊ-инструмСнт с ΠΌΠΎΠΊ-ΠΊΠ°ΠΊ-тСстовый-Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΊ-ΠΊΠ°ΠΊ-инструмСнт для создания ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² тСстовых Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ²: ΠΌΠΎΠΊΠΎΠ² ΠΈ стабов.

НС провСряйтС взаимодСйствия со стабами

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π²Ρ‹ΡˆΠ΅, ΠΌΠΎΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ исходящиС взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ SUT ΠΈ Π΅Π³ΠΎ зависимостями, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ стабы ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ входящиС взаимодСйствия, Π° Π½Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ….

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Π²Ρ‹Π·ΠΎΠ² GetNumberOfUsers() Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ внутрСнняя Π΄Π΅Ρ‚Π°Π»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΡΠ°ΡŽΡ‰Π°ΡΡΡ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ SUT собираСт Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для создания ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° этого Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ уязвимости тСста. НСваТно, ΠΊΠ°ΠΊ SUT Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ссли этот Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ…Ρ€ΡƒΠΏΠΊΠΎΠ³ΠΎ тСста:

Вакая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‚Π°ΠΊΠΆΠ΅ называСтся Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ спСцификациСй.

БовмСстноС использованиС ΠΌΠΎΠΊΠΎΠ² ΠΈ стабов

Иногда Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСстовый Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ проявляСт свойства ΠΊΠ°ΠΊ ΠΌΠΎΠΊΠ°, Ρ‚Π°ΠΊ ΠΈ стаба:

Π­Ρ‚ΠΎΡ‚ тСст ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ storeMock для Π΄Π²ΡƒΡ… Ρ†Π΅Π»Π΅ΠΉ: ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ ΠΈ провСряСт Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, сдСланный SUT.

Однако ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: тСст устанавливаСт ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ HasEnoughInventory(), Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ провСряСт Π²Ρ‹Π·ΠΎΠ² RemoveInventory(). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, здСсь Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ взаимодСйствия со стабами.

Mocks vs. stubs ΠΈ commands vs. queries

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΌΠΎΠΊΠΎΠ² ΠΈ стабов связано с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ command-query separation (CQS). ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ CQS гласит, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Π»ΠΈΠ±ΠΎ запросом, Π½ΠΎ Π½Π΅ ΠΎΠ±ΠΎΠΈΠΌΠΈ:

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, задавая вопрос, Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚. Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅, становится Π»Π΅Π³Ρ‡Π΅ для чтСния. ВСстовыС Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΈ, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, становятся ΠΌΠΎΠΊΠ°ΠΌΠΈ. Аналогично, тСстовыС Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΈ, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ запросы, ΡΠ²Π»ΡΡŽΡ‚ΡΡ стабами:

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· Π½Π° Π΄Π²Π° тСста ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Когда ΠΌΠΎΠΊΠ°Ρ‚ΡŒ?

Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ со всСми этими опрСдСлСниями, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΊΠΈ.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΌΠΎΠΊΠ°Ρ‚ΡŒ саму Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ систСму (SUT), поэтому вопрос «Когда ΠΌΠΎΠΊΠ°Ρ‚ΡŒ?Β» сводится ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ: «КакиС Ρ‚ΠΈΠΏΡ‹ зависимостСй Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° ΠΌΠΎΠΊΠΈ, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² тСстах?Β»

Π’ΠΎΡ‚ всС Ρ‚ΠΈΠΏΡ‹ зависимостСй ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° пСрСчислил Π² своСй ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅:

БовмСстная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ соотвСтствуСт измСняСмой внСпроцСссорной зависимости (mutable out-of-process dependency) Π² ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, поэтому Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ здСсь эти Π΄Π²Π° понятия ΠΊΠ°ΠΊ синонимы. (ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ постом Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€Π° Π₯ΠΎΡ€ΠΈΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС: Unit Testing Dependencies: The Complete Guide.)

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ ΡˆΠΊΠΎΠ»Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования с собствСнными взглядами Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ зависимостСй слСдуСт Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° ΠΌΠΎΠΊΠΈ:

Лондонская школа (Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ школа mockist) выступаСт Π·Π° Π·Π°ΠΌΠ΅Π½Ρƒ всСх измСняСмых зависимостСй Π½Π° ΠΌΠΎΠΊΠΈ.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ школа (Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ школа Π”Π΅Ρ‚Ρ€ΠΎΠΉΡ‚Π°) выступаСт Π·Π° Π·Π°ΠΌΠ΅Π½Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ‰ΠΈΡ… (измСняСмых внСпроцСссорных) зависимостСй.

ОбС ΡˆΠΊΠΎΠ»Ρ‹ ΠΎΡˆΠΈΠ±Π°ΡŽΡ‚ΡΡ Π² своСм ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΊ ΠΌΠΎΠΊΠ°ΠΌ, хотя классичСская школа мСньшС, Ρ‡Π΅ΠΌ лондонская.

Моки ΠΈ нСизмСняСмыС внСпроцСссорныС зависимости.

А ΠΊΠ°ΠΊ насчСт ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Ρ… внСпроцСссорных (immutable out-of-process) зависимостСй? Π Π°Π·Π²Π΅ ΠΈΡ… Π½Π΅ стоит ΠΌΠΎΠΊΠ°Ρ‚ΡŒ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΏΠΎ мнСнию ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· школ? НСизмСняСмыС внСпроцСссорныС зависимости (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слуТба API Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния) слСдуСт Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСстовым Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠΌ, Π½ΠΎ этот тСстовый Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ стабом, Π° Π½Π΅ ΠΌΠΎΠΊΠΎΠΌ.

Π­Ρ‚ΠΎ ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΈΠ·-Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠΊΠ°ΠΌΠΈ ΠΈ стабами:

ВзаимодСйствия с ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ внСпроцСссорными зависимостями ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ входящими ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ Π² тСстах, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌΠΈ (ΠΎΠ±Π΅ ΡˆΠΊΠΎΠ»Ρ‹ с этим согласны).

НС ΠΌΠΎΠΊΠ°ΠΉΡ‚Π΅ всС измСняСмыС зависимости

НС стоит ΠΌΠΎΠΊΠ°Ρ‚ΡŒ всС измСняСмыС зависимости. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ: внутрисистСмный ΠΈ мСТсистСмный.

ВнутрисистСмныС ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ взаимодСйствиС, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ проходят ваши Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ классы для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΡ… наблюдаСмого повСдСния. Π­Ρ‚ΠΎ взаимодСйствиС Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ нСпосрСдствСнной связи с Ρ†Π΅Π»ΡŒΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, связь с Ρ‚Π°ΠΊΠΈΠΌ взаимодСйствиСм ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌ тСстам.

Π­Ρ‚ΠΎ свойство мСТсистСмных ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ проистСкаСт ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ вмСстС. Один ΠΈΠ· основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ‚Π°ΠΊΠΎΠΉ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ – обСспСчСниС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. НСзависимо ΠΎΡ‚ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ выполняСтС Π²Π½ΡƒΡ‚Ρ€ΠΈ своСго прилоТСния, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ взаимодСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для взаимодСйствия с внСшними прилоТСниями, Π΄ΠΎΠ»ΠΆΠ΅Π½ всСгда ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° мСстС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСшниС прилоТСния ΠΌΠΎΠ³Π»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ. НапримСр, сообщСния, отправляСмыС вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ шинС, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ свою структуру ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ИспользованиС ΠΌΠΎΠΊΠΎΠ² закрСпляСт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ тСстируСмой систСмой ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ вашСй систСмой ΠΈ внСшними прилоТСниями. И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, использованиС ΠΌΠΎΠΊΠΎΠ² для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ классами Π²Π½ΡƒΡ‚Ρ€ΠΈ вашСй систСмы связываСт ваши тСсты с дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, дСлая ΠΈΡ… Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌΠΈ. ВнутрисистСмныС связи ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ измСняСмым внутрипроцСссорным зависимостям:

Π˜Ρ‚Π°ΠΊ, лондонская школа ΠΎΡˆΠΈΠ±Π°Π΅Ρ‚ΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° поощряСт использованиС ΠΌΠΎΠΊΠΎΠ² для всСх измСняСмых зависимостСй ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ различия ΠΌΠ΅ΠΆΠ΄Ρƒ внутрисистСмными (внутрипроцСссорными) ΠΈ мСТсистСмными (внСпроцСссорными) коммуникациями.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ тСсты ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ связь ΠΌΠ΅ΠΆΠ΄Ρƒ классами Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ связь ΠΌΠ΅ΠΆΠ΄Ρƒ вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ внСшними систСмами. Π­Ρ‚ΠΎ Π½Π΅ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ использованиС ΠΌΠΎΠΊΠΎΠ² являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ слСдованиС лондонской школС часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌ тСстам β€” тСстам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны с дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

НС ΠΌΠΎΠΊΠ°ΠΉΡ‚Π΅ всС внСпроцСссорныС зависимости

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ школа Π»ΡƒΡ‡ΡˆΠ΅ справляСтся с этим вопросом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° выступаСт Π·Π° Π·Π°ΠΌΠ΅Π½Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСпроцСссорных зависимостСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ слуТба SMTP, шина сообщСний ΠΈ Ρ‚. Π΄. Но классичСская школа Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ идСальна ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ мСТсистСмным коммуникациям. Π­Ρ‚Π° школа Ρ‚Π°ΠΊΠΆΠ΅ поощряСт Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ использованиС ΠΌΠΎΠΊΠΎΠ², хотя ΠΈ Π½Π΅ Ρ‚Π°ΠΊ сильно, ΠΊΠ°ΠΊ лондонская школа.

НС всС внСпроцСссорныС зависимости слСдуСт ΠΌΠΎΠΊΠ°Ρ‚ΡŒ. Если внСпроцСссорная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ связь с Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ наблюдаСмого повСдСния вашСй систСмы. ВнСпроцСссорная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, которая Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π²Π½Π΅, ΠΏΠΎ сути, дСйствуСт ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ вашСго прилоТСния. Бвязи с Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ становятся дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ послС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΊΠΎΠ².

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ всСгда ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ схСму взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ внСшними систСмами проистСкаСт ΠΈΠ· нСобходимости ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ способ взаимодСйствия вашСго прилоТСния с внСшними систСмами. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ эти внСшниС систСмы ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ; ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ развСртывания, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ….

Но ΠΊΠΎΠ³Π΄Π° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ дСйствуСт ΠΊΠ°ΠΊ прокси-сСрвСр для внСшнСй систСмы, ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ прямой доступ, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости исчСзаСт. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вмСстС с этой внСшнСй систСмой, ΠΈ это Π½Π΅ повлияСт Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Π‘Ρ…Π΅ΠΌΠ° взаимодСйствия с Ρ‚Π°ΠΊΠΎΠΉ систСмой становится Π΄Π΅Ρ‚Π°Π»ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ здСсь являСтся Π‘Π” прилоТСния: Π‘Π”, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Ни ΠΎΠ΄Π½Π° внСшняя систСма Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступа ΠΊ этой Π‘Π”. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ схСму взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ вашСй систСмой ΠΈ Π‘Π” прилоТСния Π»ΡŽΠ±Ρ‹ΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π²Π°ΠΌ способом, Ссли это Π½Π΅ Π»ΠΎΠΌΠ°Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта Π‘Π” ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скрыта ΠΎΡ‚ Π³Π»Π°Π· ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π²Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ хранСния, ΠΈ Π½ΠΈΠΊΡ‚ΠΎ этого Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚.

ИспользованиС ΠΌΠΎΠΊΠΎΠ² для внСпроцСссорных зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌ тСстам. Π’Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши тСсты ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ красными ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Π‘Π” ΠΈΠ»ΠΈ измСняСтС Ρ‚ΠΈΠΏ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅. Π‘Π” ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° систСма.

Π­Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ раздСляСт внСпроцСссорныС зависимости Π½Π° Π΄Π²Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

УправляСмыС (managed) зависимости β€” внСпроцСссорныС зависимости, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ. Π­Ρ‚ΠΈ зависимости доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅; взаимодСйствия с Π½ΠΈΠΌΠΈ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΌΠΈΡ€Ρƒ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся Π‘Π” прилоТСния. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ систСмы Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ прямого доступа ΠΊ вашСй Π‘Π”; ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ это Ρ‡Π΅Ρ€Π΅Π· API, прСдоставляСмый вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Волько нСуправляСмыС зависимости Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΌΠΎΠΊΠ°ΠΌΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры управляСмых зависимостСй Π² тСстах.

РСзюмС

БущСствуСт ΠΏΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² тСстовых Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ² β€” dummy (ΠΌΠ°Π½Π΅ΠΊΠ΅Π½), стаб, spy (шпион), ΠΌΠΎΠΊ ΠΈ Ρ„Π΅ΠΉΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всСго Π² Π΄Π²Π° Ρ‚ΠΈΠΏΠ°: ΠΌΠΎΠΊΠΈ ΠΈ стабы.

Spies Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΌΠΎΠΊΠΈ; dummy ΠΈ Ρ„Π΅ΠΉΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ стабы.

Различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠΊΠ°ΠΌΠΈ ΠΈ стабами:

Моки ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ исходящиС взаимодСйствия: Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΎΡ‚ SUT ΠΊ Π΅Π³ΠΎ зависимостям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ состояниС этих зависимостСй.

Π‘Ρ‚Π°Π±Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ входящиС взаимодСйствия: для получСния Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… SUT обращаСтся ΠΊ своим зависимостям.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° взаимодСйствия со стабами всСгда ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌ тСстам.

ВСстовыС Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΈ, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CQS, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΠΊΠ°ΠΌΠΈ. ВСстовыС Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΈ, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ запросы CQS, ΡΠ²Π»ΡΡŽΡ‚ΡΡ стабами.

ВнСпроцСссорныС зависимости ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 2 ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: управляСмыС ΠΈ нСуправляСмыС зависимости.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры управляСмых зависимостСй Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстах; Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ нСуправляСмыС зависимости ΠΌΠΎΠΊΠ°ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *