ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php

2. НаписаниС тСстов Π½Π° PHPUnit

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @test Π² Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ тСстирования.

Π’Π½ΡƒΡ‚Ρ€ΠΈ тСстовых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, соотвСтствуСт Π»ΠΈ фактичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹-утвСрТдСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ assertSame() (см. УтвСрТдСния ).

Зависимости тСстов

Адриан ΠšΡƒΠ½ (Adrian Kuhn) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅:

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² качСствС Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π±Π°Π³ΠΈ, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для тСстируСмого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ модуля (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). Для достиТСния этих прСимущСств ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Один ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅. Однако тСстовыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ инкапсулированными ΠΈ нСзависимыми. Часто ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ нСявныС зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ тСстовыми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, скрытыС Π² сцСнарии Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ тСста.

PHPUnit ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ объявлСниС явных зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ тСстовыми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π­Ρ‚ΠΈ зависимости Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ тСстовыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ экзСмпляр (Π΄Π°Π½Π½Ρ‹Π΅) фикстуры тСста, созданныС поставщиком (producer) для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΅Π³ΠΎ зависимым потрСбитСлям (consumers).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.2 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @depends для прСдставлСния зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ тСстовыми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ.

ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн ΠΊΠ°ΠΊ public ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ массив массивов, Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс Iterator ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ массив ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ массива, ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ тСстовый ΠΌΠ΅Ρ‚ΠΎΠ΄ с элСмСнтами массива Π² качСствС Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

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

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

Как Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния PHP с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit

Π’ этом руководствС ΠΌΡ‹ вСрнСмся ΠΊ PHP ΠΈ Π½Π° этот Ρ€Π°Π· рассмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹Π΅ ошибкам прилоТСния 💪.

Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΈ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ прСдставлСния о….

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты?

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

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° всС Π±ΠΎΠ»Π΅Π΅ наглядно.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ структуру нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ создадим Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΎΠ΄Π½Ρƒ Π½Π°Π·ΠΎΠ²Π΅ΠΌ app, Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ – tests. Π”Π°Π»Π΅Π΅ создадим Ρ„Π°ΠΉΠ» composer.json со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

ПослС этого ΠΌΡ‹ запускаСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ composer dump для создания autoload:

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ установим PHPUnit. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Π½Π°ΡˆΠΈΡ… тСстов.

ПослС этого Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для PHPUnit. Для этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ создадим Ρ„Π°ΠΉΠ» phpunit.xml, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

ЀактичСски, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ bootstrap Ρ„Π°ΠΉΠ» Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса, Π° Π² testsuite – ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ тСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² нашСм случаС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ tests.

Для этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ создадим класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΏΠΎΠ΄ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° для запуска Π½Π°ΡˆΠΈΡ… тСстов. Для этого ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ создаСм ΠΏΠ°ΠΏΠΊΡƒ Classes. ПослС создания этой ΠΏΠ°ΠΏΠΊΠΈ ΠΌΡ‹ обращаСмся ΠΊ Π½Π΅ΠΉ ΠΈ создаСм Ρ„Π°ΠΉΠ» Calc.php, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, это ΠΎΡ‡Π΅Π½ΡŒ простой ΠΊΠΎΠ΄. Π’ Π½Π΅ΠΌ просто Π΅ΡΡ‚ΡŒ функция, которая Π±Π΅Ρ€Π΅Ρ‚ Π΄Π²Π° числа ΠΈ вычисляСт сумму.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ это сдСлано, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ тСст. Для этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ tests ΠΈ Π² Π½Π΅ΠΉ создадим Ρ„Π°ΠΉΠ» CalcTest.php. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ имя Ρ„Π°ΠΉΠ»Π° ΠΈΠΌΠ΅Π»ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ CamelCase ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ Test.php. Π­Ρ‚ΠΎ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ PHPUnit для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° это тСст, Π° ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚. Если ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, тСст Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, поэтому Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠ± этой Π΄Π΅Ρ‚Π°Π»ΠΈ.

ПослС создания Ρ„Π°ΠΉΠ»Π° ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ добавляСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

ПослС создания Ρ„Π°ΠΉΠ»Π° ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ добавляСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ, это добавляСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ PHPUnit ΠΈ наш класс Calc.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ созданиС класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ наш Ρ„Π°ΠΉΠ», ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ класс TestCase. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ смоТСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности PHPUnit для создания Π½Π°ΡˆΠΈΡ… тСстов.

Π’Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΌΡ‹ создадим наши тСсты. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ test_sum. ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΈΠΌΠ΅Π½ΠΈ test_ ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ названия snake_case, ΠΈΠ½Π°Ρ‡Π΅ PHPUnit ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹. Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ тСст Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ самодостаточным ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… тСстов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ test_sum ΠΌΡ‹ создаСм экзСмпляр класса Calc ΠΈ выполняСм ΠΌΠ΅Ρ‚ΠΎΠ΄ sum, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ тСста ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ assertEquals, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ класса TestCase ΠΈ Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ β€œΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ€Π°Π²Π½Ρ‹ Π»ΠΈ они”. Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ – Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Π² порядкС.

БСйчас, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создали наш тСст, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Для этого ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² наш ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ запускаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Если всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС наши тСсты ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹.

ΠšΡ€ΠΎΠΌΠ΅ assertEquals, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² этом спискС. НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ являСтся Ρ†Π΅Π»Ρ‹ΠΌ числом, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AssertIsInt:

setUp() ΠΈ tearDown()

Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… тСстах ΠΌΡ‹ повторяСм ΠΊΠΎΠ΄ ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅, ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΊΠΎΠ΄Π°. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ setUp ΠΈ tearDown. ΠœΠ΅Ρ‚ΠΎΠ΄ setUp всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ тСста, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ tearDown Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡˆΠΈΡ… тСстов Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ… Π² дСйствии, вСрнСмся ΠΊ классу Calc ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ выглядСл ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ возвращаСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ тСсту ΠΈ измСняСм Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ тСст, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ setUp():

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ setUp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр класса ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° выполняСтся тСст. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, наши тСсты Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‡ΠΈΡ‰Π΅ ΠΈ понятнСС.

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

ИдСя тСстов Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ всСгда запускаСм ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ наш ΠΊΠΎΠ΄ ΠΎΡ‚ ошибок, поэтому я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ любой возмоТности.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ записи

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. js. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-js. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° js. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Ѐункция Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сайт являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ информация о…

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. Python. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-Python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ Python ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ наимСньшСС ΠΎΠ±Ρ‰Π΅Π΅ ΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ (НОК) Π΄Π²ΡƒΡ… чисСл.…

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. Python. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-Python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python, Π½ΠΎ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ,…

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

8 Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹Ρ… инструмСнтов для тСстирования PHP

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. 155cac8b 60a5 439b b0d3 8f7e7299eb52 cover. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-155cac8b 60a5 439b b0d3 8f7e7299eb52 cover. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 155cac8b 60a5 439b b0d3 8f7e7299eb52 cover. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. itvdn authors 13edf98e 6eae 4f93 91b9 44ddb7293dd8. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-itvdn authors 13edf98e 6eae 4f93 91b9 44ddb7293dd8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° itvdn authors 13edf98e 6eae 4f93 91b9 44ddb7293dd8. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Для получСния качСствСнного ΠΊΠΎΠ΄Π°, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСстированиС Π²ΠΎ врСмя Π΅Π³ΠΎ написания (Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TDD). Однако, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ срСди Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π° PHP инструмСнтов тСстирования.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна самым ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнным инструмСнтам тСстирования. Π’ Π½Π΅ΠΉ собрана обновлСнная информация ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ QA инструмСнтов Π² 2017 Π³ΠΎΠ΄Ρƒ.

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 718f9026 8b6e 4087 b021 ab5937d748fe. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 718f9026 8b6e 4087 b021 ab5937d748fe. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 718f9026 8b6e 4087 b021 ab5937d748fe. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

PHPUnit

Cucumber

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 27cf900a 649b 4951 98e0 871b5f068c96. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 27cf900a 649b 4951 98e0 871b5f068c96. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 27cf900a 649b 4951 98e0 871b5f068c96. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

Π’Π΅ΠΌΠ° связана со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 6c771d38 ce04 4f27 a0ff 03ca91334b7e. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 6c771d38 ce04 4f27 a0ff 03ca91334b7e. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 6c771d38 ce04 4f27 a0ff 03ca91334b7e. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Atoum

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 4c6be0ec e490 4f4a b8a5 8cc8aca60626. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 4c6be0ec e490 4f4a b8a5 8cc8aca60626. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 4c6be0ec e490 4f4a b8a5 8cc8aca60626. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Atoum – Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для тСстирования PHP. Π­Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· GitHub, Composer ΠΈΠ»ΠΈ исполняСмый Ρ„Π°ΠΉΠ» PHAR.

ВСсты Atoum ΠΎΡ‡Π΅Π½ΡŒ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ взаимосвязи.

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 0277e0fa f7f7 4201 819d c6ccbdcbac70. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 0277e0fa f7f7 4201 819d c6ccbdcbac70. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 0277e0fa f7f7 4201 819d c6ccbdcbac70. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Selenium

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Selenium с PHPUnit, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅.

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 98cf8b3b 5d96 40f5 874b 12c7f0eb4614. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 98cf8b3b 5d96 40f5 874b 12c7f0eb4614. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 98cf8b3b 5d96 40f5 874b 12c7f0eb4614. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics b47cce9d 078b 445b b600 75bde51f86e5. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics b47cce9d 078b 445b b600 75bde51f86e5. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics b47cce9d 078b 445b b600 75bde51f86e5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Dusk

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 013e1f41 c3c5 4d1a 8752 6cc8d06492e9. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 013e1f41 c3c5 4d1a 8752 6cc8d06492e9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 013e1f41 c3c5 4d1a 8752 6cc8d06492e9. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Dusk ΠΈΠ· Laravel – Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ инструмСнт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ (с chromedriver) ΠΈΠ»ΠΈ с Selenium. Он ΠΈΠΌΠ΅Π΅Ρ‚ простой Π² использовании API ΠΈ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС возмоТности тСстирования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ элСмСнтов, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ², ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ ΠΈ Ρ‚.Π΄. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 63e50225 04a5 40d2 990b 89607cfdd6d4. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 63e50225 04a5 40d2 990b 89607cfdd6d4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 63e50225 04a5 40d2 990b 89607cfdd6d4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Kahlan

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics e4628ef1 404b 4e15 9f99 0ee171024a23. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics e4628ef1 404b 4e15 9f99 0ee171024a23. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics e4628ef1 404b 4e15 9f99 0ee171024a23. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Kahlan – это ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ срСда тСстирования Unit & BDD, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ синтаксис.

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics f4226d4e 7b29 4ae7 9b4c 7136638511d2. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics f4226d4e 7b29 4ae7 9b4c 7136638511d2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics f4226d4e 7b29 4ae7 9b4c 7136638511d2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ синтаксиса Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° тСсты Behat. Kahlan ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Stub-ΠΈΠ½Π³ ΠΈ Mock-ΠΈΠ½Π³ (stubbing and mocking out of the box) Π±Π΅Π· зависимостСй, покрытия ΠΊΠΎΠ΄Π°, отчСтности ΠΈ Ρ‚.Π΄.

Π’ΠΈΠ΄Π΅ΠΎ курсы ΠΏΠΎ схоТСй Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. symfony php img. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-symfony php img. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° symfony php img. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Π’Π΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° PHP Symfony

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. php essential img. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-php essential img. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php essential img. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. php starter img. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-php starter img. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php starter img. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 4f5a9b22 f717 4a1c b8f2 94fd400a3e0c. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 4f5a9b22 f717 4a1c b8f2 94fd400a3e0c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 4f5a9b22 f717 4a1c b8f2 94fd400a3e0c. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

php_testability

ПослСдний ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ упомянСм здСсь – PHP Testability. Π­Ρ‚ΠΎ инструмСнт статичСского Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассказываСт ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚.

ΠŸΠ°ΠΊΠ΅Ρ‚ Π² настоящСС врСмя Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· Composer:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics 758ffedc 0122 4362 a9ef 864e5db60f6e. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics 758ffedc 0122 4362 a9ef 864e5db60f6e. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics 758ffedc 0122 4362 a9ef 864e5db60f6e. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Π—Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. a blog pics d78d8fa4 b973 4ec2 889f 3f5e18dd4c57. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-a blog pics d78d8fa4 b973 4ec2 889f 3f5e18dd4c57. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a blog pics d78d8fa4 b973 4ec2 889f 3f5e18dd4c57. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

БСрвисы Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ (CI)

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

БущСствуСт мноТСство сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ доступныС Ρ†Π΅Π½Ρ‹, Π½ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнты с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ:

β€’ PHPCI: (с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ)

β€’ TravisCI: (бСсплатно для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ)

β€’ SemaphoreCI: (бСсплатно для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ)

БСсплатныС Π²Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹ ΠΏΠΎ схоТСй Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅:

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. mqdefault. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-mqdefault. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mqdefault. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ сайтов с использованиСм PHP

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. mqdefault. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-mqdefault. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mqdefault. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ web-сайта с гСографичСской Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. symfony4 img. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-symfony4 img. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° symfony4 img. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π±Π»ΠΎΠ³Π° Π½Π° Symfony 4

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

ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ тСстирования ΠΊΠΎΠ΄Π° слоТно, Π½ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρƒ развиваСтся с ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ. Если Π²Ρ‹ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ΡΡŒ ΠΎ своСм ΠΊΠΎΠ΄Π΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ! ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ инструмСнты ΠΈ рСсурсы ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

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

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ тСстируСмый ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° PHP

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

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ простоты тСстируСмости ΠΈ сопровоТдСния – ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ вашС врСмя.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с нСсколько Π²Ρ‹Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ³ΠΎ, Π½ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ класс Π² любом Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ:

1. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π΅ тСстируСмый.

2. Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ, ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ.

НапримСр, Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ источник Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ использовании App::db Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ нСпонятно, ΠΊΠ°ΠΊ Π±Ρ‹Ρ‚ΡŒ Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ просто ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅?

ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° создания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСста для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°, описанного Π²Ρ‹ΡˆΠ΅:

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎ ΠΆ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° «НС повторяйся»

Π­Ρ‚ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСм нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π² Π½Π°ΡˆΡƒ модСль. Код становится Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° пСрСстаСт Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ† (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сСссии).

Однако ΠΎΠ½ всС Π΅Ρ‰Π΅ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ Π»Π΅Π³ΠΊΠΎ тСстируСмый ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ, ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ. ΠœΡ‹ Π΄ΠΎ сих ΠΏΠΎΡ€ полагаСмся Π½Π° соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимости

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ зависимости для нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ User обСспСчСны. Наш класс большС Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π½Π΅ полагаСтся Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ наш класс Π² Ρ†Π΅Π»ΠΎΠΌ тСстируСмый. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ источник Π΄Π°Π½Π½Ρ‹Ρ… согласно Π½Π°ΡˆΠ΅ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ (ΠΏΠΎ большСй части) ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π°. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ соСдинСниС ΠΊ нашим ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (прСдполагая, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ Π±Π°Π·Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ…). ΠšΡ€ΡƒΡ‚ΠΎ!

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ выглядит ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст сСйчас:

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ новСнькоС Π² этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст: Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Ѐиктивная рСализация позволяСт Π½Π°ΠΌ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Ρ„Π°Π»ΡŒΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) PHP ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ осущСствляСм Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ нашСй Β« Π·Π°Π³Π»ΡƒΡˆΠΊΠΎΠΉ Β» ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСстированиС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ просто ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ модСль.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ?

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

Но ΠΌΡ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ наш ΠΊΠΎΠ΄ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅. Π‘ этого мСста начинаСтся самоС интСрСсноС.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹

Для дальнСйшСго ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсы. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π—Π΄Π΅ΡΡŒ происходит нСсколько Π²Π΅Ρ‰Π΅ΠΉ.

Π§Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅?

А Π΅Ρ‰Π΅ ΠΌΡ‹ упростили наш ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст!

Но ΠΌΡ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅!

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹

Рассмотрим использованиС нашСго Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°:

Π― пСрСмСстил созданиС ΠΌΠΎΠ΄Π΅Π»ΠΈ User Π² ΠΎΠ΄Π½ΠΎ мСсто Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ прилоТСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅:

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ слово

Π’ нашСм ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΊΠΎΠ΄Π° для достиТСния простоты обслуТивания ΠΈ тСстируСмости. Π‘ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ – ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ слоТности. Π’ самом Π΄Π΅Π»Π΅, для этого трСбуСтся Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ для основного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‚Π°ΠΊ ΠΈ для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… участников ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Однако, Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° объяснСниС ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° с Π»ΠΈΡ…Π²ΠΎΠΉ ΠΎΠΊΡƒΠΏΠ°ΡŽΡ‚ΡΡ сниТСниСм тСхничСского Π΄ΠΎΠ»Π³Π°.
Код стал Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌ Π² обслуТивании, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠ»Π°ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ измСнСния всСго Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, Π° Π½Π΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ….

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ тСстированиС снизит количСство ошибок Π² ΠΊΠΎΠ΄Π΅ со Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Ρ€Ρ‹Π²ΠΎΠΌ – особСнно Π² долгосрочных ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π² сообщСствС (с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

ΠŸΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ сСйчас, ΠΌΡ‹ сэкономим врСмя ΠΈ освободимся ΠΎΡ‚ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

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

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ваши зависимости, основанныС Π½Π° Composer, со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ трСбованиями:

ΠŸΡ€ΠΈ использовании PHP Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Laravel 4 ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ΄Π΅ΠΉ, описанных здСсь, носит ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€.

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

PHPUnit. «Как ΠΌΠ½Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ Ρ‡Ρ‘Ρ€Ρ‚ΠΎΠ² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Β», ΠΈΠ»ΠΈ тСстированиС для ΡΠΎΠΌΠ½Π΅Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. doliasx6rmfzgqhvfc 7jdazq w. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-doliasx6rmfzgqhvfc 7jdazq w. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° doliasx6rmfzgqhvfc 7jdazq w. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Π”Π°, это ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ пост Π½Π° Ρ‚Π΅ΠΌΡƒ тСстирования. Казалось Π±Ρ‹, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ? ВсС ΠΊΠΎΠΌΡƒ Π½Π°Π΄ΠΎ β€” ΠΏΠΈΡˆΡƒΡ‚ тСсты, ΠΊΠΎΠΌΡƒ Π½Π΅ Π½Π°Π΄ΠΎ β€” Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚, всС счастливы! Π€Π°ΠΊΡ‚ ΠΆΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ постов ΠΎ ΡŽΠ½ΠΈΡ‚-тСстировании ΠΈΠΌΠ΅ΡŽΡ‚β€¦ ΠΊΠ°ΠΊ Π±Ρ‹ Ρ‚Π°ΠΊ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΎΠ±ΠΈΠ΄Π΅Ρ‚ΡŒβ€¦ идиотскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹! НСт, Π½Ρƒ ΠΏΡ€Π°Π²Π΄Π°! БСгодня я ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΎΡˆΡƒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.

И Ρ‚Π°ΠΊ, быстрый Π³ΡƒΠ³Π»Ρ‘ΠΆ Π½Π° Ρ‚Π΅ΠΌΡƒ тСстов Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ просто ΡƒΠΉΠΌΡƒ статСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² своСй основной массС дСлятся Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

1) Π‘Ρ‡Π°ΡΡ‚ΡŒΠ΅ ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅Ρ€Π°. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π΄ΠΎΠ»Π³ΠΎΠ΅ вступлСниС, ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΡŽΠ½ΠΈΡ‚-тСстирования Π½Π° Π”Ρ€Π΅Π²Π½Π΅ΠΉ Руси, ΠΏΠΎΡ‚ΠΎΠΌ Π΄Π΅ΡΡΡ‚ΡŒ Π»Π°ΠΉΡ„Ρ…Π°ΠΊΠΎΠ² с тСстами, ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅-ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ тСстированиСм ΠΊΠΎΠ΄Π° Π²Ρ€ΠΎΠ΄Π΅ этого:

И я сСйчас Π½Π΅ ΡˆΡƒΡ‡Ρƒ. Π― ΠΏΡ€Π°Π²Π΄Π° Π²ΠΈΠ΄Π΅Π» ΡΡ‚Π°Ρ‚ΡŒΠΈ с Β«ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ΠΎΠΌΒ» Π² Ρ€ΠΎΠ»ΠΈ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ пособия. Π”Π°-Π΄Π°, я понимаю Ρ‡Ρ‚ΠΎ для Π½Π°Ρ‡Π°Π»Π° Π½Π°Π΄ΠΎ всё ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ, абстракции, Ρ‚ΡƒΠ΄Π°-ΡΡŽΠ΄Π°β€¦ Но вСдь Π½Π° этом всё ΠΈ заканчиваСтся! А дальшС дорисуйтС сову, ΠΊΠ°ΠΊ говорится

2) Π§Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ пСрСуслоТнённыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. А Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм тСст, ΠΈ Π·Π°ΠΏΠΈΡ…Π½Ρ‘ΠΌ Π΅Π³ΠΎ Π² Gitlab CI, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅ΠΌ Π΅Ρ‰Ρ‘ Π°Π²Ρ‚ΠΎΠ΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Ссли тСст ΠΏΡ€ΠΎΡˆΡ‘Π», Π° Π½Π° тСсты Π΅Ρ‰Ρ‘ PHP Infection Π½Π°ΠΌΠ°ΠΆΠ΅ΠΌ, Π΄Π° с Hudson всё соСдСним. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π² Ρ‚Π°ΠΊΠΎΠΌ стилС. Π’Ρ€ΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π° Π²Ρ€ΠΎΠ΄Π΅ ΠΈ совсСм Π½Π΅ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ ΠΈΡ‰Π΅ΡˆΡŒ. А вСдь хочСтся просто Ρ‡ΡƒΡ‚ΠΎΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. А всС эти нСпрСрывности β€” Π½Ρƒ ΠΏΠΎΡ‚ΠΎΠΌ, Π½Π΅ всё ΠΆΠ΅ сразу.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ люди ΡΠΎΠΌΠ½Π΅Π²Π°ΡŽΡ‚ΡΡ, Β«Π° Π½Π°Π΄ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ ΠΌΠ½Π΅Β». Π― ΠΆΠ΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ тСстировании понятнСС. И ΠΎΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ сразу β€” я Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, я Π½Π΅ тСстировщик. Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ я сам ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π½Π΅ знаю, Π° ΠΌΠΎΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² ΠΆΠΈΠ·Π½ΠΈ словом Π½Π΅ Π±Ρ‹Π»ΠΎ слово Β«ΠΌΠΎΠΊΒ». Π― Π΄Π°ΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΏΠΎ TDD! Π—Π°Ρ‚ΠΎ я Ρ‚ΠΎΡ‡Π½ΠΎ знаю, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² тСстами, Π° эти самыС тСсты ΡƒΠΆΠ΅ ΠΎΡ‚Π»ΠΎΠ²ΠΈΠ»ΠΈ свой дСсяток Π±Π°Π³ΠΎΠ². А Ссли ΠΌΠ½Π΅ это ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ β€” Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ. НСкоторыС ΠΏΠΎΠΉΠΌΠ°Π½Π½Ρ‹Π΅ Π±Π°Π³ΠΈ Π±Ρ‹Π»ΠΎ Π±Ρ‹ слоТно Π²Ρ‹Π»ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Для Π½Π°Ρ‡Π°Π»Π°, ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π· Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ вопрос-ΠΎΡ‚Π²Π΅Ρ‚:

Q: Π― обязан ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ? А Ρ‡Ρ‚ΠΎ Ссли Ρƒ мСня Yii? А Ссли Kohana? А Ссли %one_more_framework_name%?
А: НСт, PHPUnit это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для тСстирования, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΊ лСгаси-ΠΊΠΎΠ΄Ρƒ Π½Π° самопальном Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅.

Q: А я сСйчас Ρ€ΡƒΠΊΠ°ΠΌΠΈ сайт ΠΏΠΎ-быстрому ΠΏΡ€ΠΎΡ…ΠΎΠΆΡƒ, ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ ΠΌΠ½Π΅?
А: Β«ΠŸΡ€ΠΎΠ³ΠΎΠ½Β» Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков тСстов длится нСсколько сСкунд. АвтоматичСскоС тСстированиС всСгда быстрСС ΠΌΠ°Π½ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ, Π° ΠΏΡ€ΠΈ качСствСнных тСстах Π΅Ρ‰Ρ‘ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ всС сцСнарии.

Q: Π£ мСня лСгаси-ΠΊΠΎΠ΄ с функциями ΠΏΠΎ 2000 строк. Π― ΠΌΠΎΠ³Ρƒ это Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?
A: И Π΄Π°, ΠΈ Π½Π΅Ρ‚. Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ β€” Π΄Π°, любой ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ тСстом. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ с Π·Π°Π΄Π΅Π»ΠΎΠΌ ΠΏΠΎΠ΄ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ тСстированиС. Ѐункция Π½Π° 2000 строк Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ зависимостСй, Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв. ΠœΠΎΠΆΠ΅Ρ‚ ΠΈ получится Π΅Ρ‘ Π² ΠΈΡ‚ΠΎΠ³Π΅ всю ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ, Π½ΠΎ скорСС всСго это Π·Π°ΠΉΠΌΡ‘Ρ‚ Ρƒ вас Π½Π΅ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π§Π΅ΠΌ качСствСннСС ΠΊΠΎΠ΄ β€” Ρ‚Π΅ΠΌ Π»Π΅Π³Ρ‡Π΅ Π΅Π³ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π§Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Single Responsibility β€” Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ Π±ΡƒΠ΄ΡƒΡ‚ тСсты. Для тСстирования старых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π°Ρ‰Π΅ всСго придётся сначала Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ ΠΎΡ‚Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈΡ….

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. c5oaze8gmau8ticskgu44o5wyza. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-c5oaze8gmau8ticskgu44o5wyza. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c5oaze8gmau8ticskgu44o5wyza. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:

Q: Π£ мСня ΠΎΡ‡Π΅Π½ΡŒ простыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? Π’Π°ΠΌ всё Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ, Ρ‚Π°ΠΌ Π½Π΅Ρ‚ мСста ошибкС!
А: Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π²Ρ‹ Π½Π΅ тСстируСтС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ссли Ρƒ вас Π½Π΅ TDD), Π²Ρ‹ просто «фиксируСтС» Π΅Ρ‘ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ понадобится Π΅Ρ‘ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π²Ρ‹ смоТСтС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ тСста быстро ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ сломали Π»ΠΈ Π²Ρ‹ Π΅Ρ‘ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π΅ΡΡ‚ΡŒ функция, которая Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ email. Π”Π΅Π»Π°Π΅Ρ‚ ΠΎΠ½Π° это рСгуляркой.

Π’Π΅ΡΡŒ ваш ΠΊΠΎΠ΄ расчитываСт Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈΠΌΠ΅ΠΉΠ» β€” ΠΎΠ½Π° Π²Π΅Ρ€Π½Ρ‘Ρ‚ true. Массив Π²Π°Π»ΠΈΠ΄Π½Ρ‹Ρ… ΠΈΠΌΠ΅ΠΉΠ»ΠΎΠ² β€” Ρ‚ΠΎΠΆΠ΅ true. Массив хотя Π±Ρ‹ с ΠΎΠ΄Π½ΠΈΠΌ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ ΠΈΠΌΠ΅ΠΉΠ»ΠΎΠΌ β€” false. Ну ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ ΡΡƒΡ‚ΡŒ понятна. Но настал дСнь, ΠΈ Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΡΡ‚Ρ€ΡƒΠΎΠ·Π½ΡƒΡŽ рСгулярку внСшним API. Но ΠΊΠ°ΠΊ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСписанная функция Π½Π΅ помСняла ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹? Π’Π΄Ρ€ΡƒΠ³ ΠΎΠ½Π° ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ массив? Или Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π½Π΅ boolean? А тСсты смогут это всё Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ. Π₯ΠΎΡ€ΠΎΡˆΠΎ написанный тСст сразу ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ.

Q: Когда я Π½Π°Ρ‡Π½Ρƒ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΠΊ ΠΎΡ‚ тСстов?
А: Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΊΡ€ΠΎΠ΅Ρ‚Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. Π§Π΅ΠΌ Π±Π»ΠΈΠΆΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊ 100% β€” Ρ‚Π΅ΠΌ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅ тСстированиС. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ придётся Π΄Π΅Π»Π°Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, Π»ΠΈΠ±ΠΎ ΠΆΠ΅ измСнСния Π² слоТной части ΠΊΠΎΠ΄Π°. ВСсты ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΡƒΠΏΡƒΡ‰Π΅Π½Ρ‹ (ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи). Π’ΠΎ-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΏΡ€ΠΈ написании самих тСстов! Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ написании тСста Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСдостатки ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹.

Q: Ну Π²ΠΎΡ‚, Ρƒ мСня сайт Π½Π° laravel. Π‘Π°ΠΉΡ‚ это Π½Π΅ функция, сайт это Ρ…Ρ€Π΅Π½ΠΎΠ²Π° Π³ΠΎΡ€Π° ΠΊΠΎΠ΄Π°. Как Ρ‚ΡƒΡ‚ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?
А: ИмСнно ΠΎΠ± этом ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ дальшС. Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅: ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ тСстируСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ middleware, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ сСрвисы, ΠΈ Ρ‚. Π΄.

Одна ΠΈΠ· ΠΈΠ΄Π΅ΠΉ Unit-тСстирования Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² изоляции тСстируСмого участка ΠΊΠΎΠ΄Π°. Π§Π΅ΠΌ мСньшС ΠΊΠΎΠ΄Π° провСряСтся ΠΎΠ΄Π½ΠΈΠΌ тСстом β€” Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΡ‘Π½Π½Ρ‹ΠΉ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ:

Эмуляция, ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² называСтся моканьСм (ΠΎΡ‚ Π°Π½Π³Π». mock object, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ: Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-пародия»). Никто Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ всё ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ΠΎ Π΄ΠΎ нас, поэтому Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ такая чудСсная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΊΠ°ΠΊ Mockery. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΌΠΎΠΊΠΈ для сСрвисов.

НичСго слоТного, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? ΠœΡ‹ создали Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ для Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² класса, создали экзСмпляр Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ класса, ΠΈ Β«Π΄Ρ‘Ρ€Π½ΡƒΠ»ΠΈΒ» Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, пСрСдавая Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚. Но ΠΊΠ°ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ? Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ самая ваТная Ρ‡Π°ΡΡ‚ΡŒ тСста β€” Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, assertion. PHPUnit ΠΈΠΌΠ΅Π΅Ρ‚ дСсятки Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… assertions. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½ΠΈΡ…

Π”Π°Π½Π½Ρ‹ΠΉ тСст Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ β€” Ссли Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π»ΠΎΠ³ΠΈΠ½ ΠΏΡ€ΠΈΠ»Π΅Ρ‚ΠΈΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ найдётся поля login ΠΈΠ»ΠΈ password β€” Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Ρ‘Ρ‚ строку Β«Auth errorΒ». Π’ΠΎΡ‚, Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, ΠΈ всё. Π’Π°ΠΊ просто β€” Π½ΠΎ Ρ‚Π°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, вСдь Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ login Π±Π΅Π· страха ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ. Наш frontend ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π² случаС Ρ‡Π΅Π³ΠΎ β€” ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. И Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ сломаСт это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅ΡˆΠΈΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСкст ошибки) β€” Ρ‚ΠΎ тСст сразу ΠΆΠ΅ ΠΎΠ± этом просигнализируСт! Π”ΠΎΠΏΠΈΡˆΠ΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… сцСнариСв.

А Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΠΎ-ΠΏΠΎΠ²ΠΎΠ΄Ρƒ зависимостСй, спроситС Π²Ρ‹. Π˜Ρ… Ρ‚ΠΎ ΠΌΡ‹ Β«Π·Π°Π³Π»ΡƒΡˆΠΈΠ»ΠΈΒ», Π° Π²Π΄Ρ€ΡƒΠ³ ΠΎΠ½ΠΈ ΡΠ»ΠΎΠΌΠ°ΡŽΡ‚ΡΡ? А Π²ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ для этого ΠΈ Π½Π°Π΄ΠΎ максимальноС ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° тСстами. ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ этих сСрвисов Π² контСкстС Π»ΠΎΠ³ΠΈΠ½Π° β€” ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½ рассчитывая Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ сСрвисов. А ΠΏΠΎΡ‚ΠΎΠΌ напишСм Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты для этих сСрвисов. А ΠΏΠΎΡ‚ΠΎΠΌ тСсты для ΠΈΡ… зависимостСй. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ тСст Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ малСнького куска ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ всС Π΅Π³ΠΎ зависимости Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. А Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС зависимости Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚Ρ‹ тСстами β€” Ρ‚ΠΎ ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Ρ‚ΠΎΠΆΠ΅ гарантируСтся. Π’ ΠΈΡ‚ΠΎΠ³Π΅, любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² систСму Π»ΠΎΠΌΠ°ΡŽΡ‰Π΅Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°ΠΆΠ΅ малСйшСго участка ΠΊΠΎΠ΄Π° β€” сразу ΠΆΠ΅ отобразится Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ тСстС. Как ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³ΠΎΠ½ тСстов β€” Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ, докумСнтация Ρƒ PHPUnit Π²ΠΏΠΎΠ»Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ. А Π² Laravel, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ vendor/bin/phpunit с корня ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСниС Π²Ρ€ΠΎΠ΄Π΅ этого

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. . ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:β€” всС тСсты ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Или Π²Ρ€ΠΎΠ΄Π΅ этого

ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. . ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ php. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHPUnit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивом PHP. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСны основныС соглашСния ΠΈ шаги для написания тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHPUnit:Один ΠΈΠ· сСми assert-ΠΎΠ² провалился.

Β«Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, классно, Π½ΠΎ Ρ‡Ρ‚ΠΎ ΠΈΠ· этого я Π½Π΅ поймаю Ρ€ΡƒΠΊΠ°ΠΌΠΈ?Β» β€” спроситС Π²Ρ‹. А Π΄Π°Π²Π°ΠΉΡ‚Π΅ для этого прСдставим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΡƒΡŽ модСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ с внСшним API. Ѐункция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ класс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ c API, ΠΈ Π² случаС ошибки β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ null. Если ΠΆΠ΅ ΠΏΡ€ΠΈ использовании этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ null β€” слСдуСт Β«ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΏΠ°Π½ΠΈΠΊΡƒΒ» (ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС Π² слак, ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΠΉΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ, ΠΈΠ»ΠΈ ΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΊΠΈΠ±Π°Π½Ρƒ. Π”Π° ΠΊΡƒΡ‡Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²). Π’Ρ€ΠΎΠ΄Π΅ всё просто, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? Но прСдставим Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π΅ΡˆΠΈΠ» Β«ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΒ» эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Он Ρ€Π΅ΡˆΠΈΠ» Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ null β€” это ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Π²Π΅ΠΊ, ΠΈ слСдуСт ΠΊΠΈΠ΄Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

И ΠΎΠ½ Π΄Π°ΠΆΠ΅ пСрСписал всС участки ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»Π°ΡΡŒ эта функция! ВсС, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. Π•Π³ΠΎ ΠΎΠ½ упустил. ΠžΡ‚Π²Π»Ρ‘ΠΊΡΡ, устал, просто ошибся β€” Π΄Π° ΠΌΠ°Π»ΠΎ Π»ΠΈ. Π€Π°ΠΊΡ‚ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ участок ΠΊΠΎΠ΄Π° всё Π΅Ρ‰Ρ‘ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ старого повСдСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. А PHP это Ρƒ нас Π½Π΅ Java β€” ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции Π½Π° основании Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ throwable функция Π½Π΅ Π·Π°Π²Ρ‘Ρ€Π½ΡƒΡ‚Π° Π² try-catch. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· 100 сцСнариСв использования сайта, Π² случаС падСния API β€” ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сообщСниС ΠΎΡ‚ систСмы. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ тСстировании ΠΌΡ‹ скорСС всСго Π½Π΅ ΠΎΡ‚Π»ΠΎΠ²ΠΈΠΌ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ события. API Ρƒ нас внСшнСС, ΠΎΡ‚ нас Π½Π΅ зависит, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ β€” ΠΈ скорСС всСго ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Ρ‘ΠΌ Β«Ρ€ΡƒΠΊΠ°ΠΌΠΈΒ» Π½Π° случай ΠΎΡ‚ΠΊΠ°Π·Π° API, ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π—Π°Ρ‚ΠΎ Π±ΡƒΠ΄ΡŒ Ρƒ нас тСсты β€” ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ отловят Π΄Π°Π½Π½Ρ‹ΠΉ кСйс, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ класс ExternalApi Π² рядС тСстов Ρƒ нас Β«Π·Π°Π³Π»ΡƒΡˆΠ΅Π½Β», ΠΈ эмулируСт ΠΊΠ°ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅. И ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСст Ρƒ нас ΡƒΠΏΠ°Π΄Ρ‘Ρ‚

Π­Ρ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π° самом Π΄Π΅Π»Π΅, достаточно. Если Ρƒ вас Π½Π΅ лСгаси лапша, ΡƒΠΆΠ΅ спустя ΠΌΠΈΠ½ΡƒΡ‚ 20-30 Π²Ρ‹ смоТСтС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ тСст. А спустя нСсколько нСдСль β€” ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅, ΠΊΡ€ΡƒΡ‚ΠΎΠ΅, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎΠ΄ этот пост, ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ Π³ΠΎΠ²Π½ΠΎΠΊΠΎΠ΄Π΅Ρ€, ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ %framework_name%, ΠΈ тСсты Ρ…Ρ€Π΅Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΈΡˆΠ΅Ρ‚, Π° Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ %this_way%. И я Π±ΡƒΠ΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π΄ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ моя Ρ†Π΅Π»ΡŒ достигнута: ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΎΡ‚ΠΊΡ€Ρ‹Π» для сСбя тСстированиС, ΠΈ Π½Π΅ΠΌΠ½ΠΎΠΆΠ΅Ρ‡ΠΊΠΎ повысил ΠΎΠ±Ρ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ профСссионализма Π² нашСй сфСрС!

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

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

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