From 35aa4ee1b99642c67547da550b4002586f958752 Mon Sep 17 00:00:00 2001 From: DinarShagaliev Date: Tue, 9 Apr 2024 19:28:11 +0300 Subject: [PATCH] Added RU translation for blocks: rxjs, performance and testing --- .../ru/challenges/performance/12-scroll-cd.md | 40 ++++++++++++++ .../performance/37-ngfor-biglist.md | 38 ++++++++++++++ .../docs/ru/challenges/performance/index.mdx | 52 +++++++++++++++++++ .../rxjs/11-bug-chaining-operator.md | 31 +++++++++++ .../ru/challenges/rxjs/38-rxjs-catch-error.md | 36 +++++++++++++ .../docs/ru/challenges/testing/17-router.md | 27 ++++++++++ .../ru/challenges/testing/18-nested-comp.md | 31 +++++++++++ .../ru/challenges/testing/19-input-output.md | 32 ++++++++++++ .../docs/ru/challenges/testing/20-modal.md | 36 +++++++++++++ .../challenges/testing/24-harness-creation.md | 48 +++++++++++++++++ .../challenges/testing/29-real-application.md | 37 +++++++++++++ 11 files changed, 408 insertions(+) create mode 100644 docs/src/content/docs/ru/challenges/performance/12-scroll-cd.md create mode 100644 docs/src/content/docs/ru/challenges/performance/37-ngfor-biglist.md create mode 100644 docs/src/content/docs/ru/challenges/performance/index.mdx create mode 100644 docs/src/content/docs/ru/challenges/rxjs/11-bug-chaining-operator.md create mode 100644 docs/src/content/docs/ru/challenges/rxjs/38-rxjs-catch-error.md create mode 100644 docs/src/content/docs/ru/challenges/testing/17-router.md create mode 100644 docs/src/content/docs/ru/challenges/testing/18-nested-comp.md create mode 100644 docs/src/content/docs/ru/challenges/testing/19-input-output.md create mode 100644 docs/src/content/docs/ru/challenges/testing/20-modal.md create mode 100644 docs/src/content/docs/ru/challenges/testing/24-harness-creation.md create mode 100644 docs/src/content/docs/ru/challenges/testing/29-real-application.md diff --git a/docs/src/content/docs/ru/challenges/performance/12-scroll-cd.md b/docs/src/content/docs/ru/challenges/performance/12-scroll-cd.md new file mode 100644 index 0000000..5a5a0c7 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/performance/12-scroll-cd.md @@ -0,0 +1,40 @@ +--- +title: 🟠 ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ +description: Π—Π°Π΄Π°Π½ΠΈΠ΅ 12 посвящСно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ количСства Ρ†ΠΈΠΊΠ»ΠΎΠ² обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ΅ +author: thomas-laforge +contributors: + - tomalaforge +challengeNumber: 12 +command: performance-scroll-cd +sidebar: + order: 107 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +Π’ Angular Π΅ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Zone.js, которая выполняСт мноТСство ΠΌΠ°Π³ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Тизнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Zone.js ΠΌΠΎΠ½ΠΊΠΈΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ всС события DOM, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ прСдставлСниС, ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ измСнилось Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. + +Однако ΠΈΠ½ΠΎΠ³Π΄Π° Zone.js Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‡Π΅ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. НапримСр, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚Π΅ событиС ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ событиС ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. + +Π’ этом испытании Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ прСдставлСниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹. + +Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вашСго прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Angular Dev Tools. + +:::note +Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, сначала ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ [Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ](/challenges/performance/). +::: + +Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΎ загрязнСнии Π·ΠΎΠ½ ΠΈ способах Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ [здСсь](https://angular.io/guide/change-detection-zone-pollution). + +Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° этого прилоТСния. + + + +## Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ + +Π’Π°ΡˆΠ° Ρ†Π΅Π»ΡŒ Π² этом испытании - ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ всСх ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ нСобходимости. + +## ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: + +Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ глобально ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Zone.js. Если этот ΠΊΠΎΠ΄ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π²Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Zone.js, Π²Ρ‹ Π±Π΅Π· сомнСния сломаСтС вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. diff --git a/docs/src/content/docs/ru/challenges/performance/37-ngfor-biglist.md b/docs/src/content/docs/ru/challenges/performance/37-ngfor-biglist.md new file mode 100644 index 0000000..43c7b4f --- /dev/null +++ b/docs/src/content/docs/ru/challenges/performance/37-ngfor-biglist.md @@ -0,0 +1,38 @@ +--- +title: 🟠 ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списков +description: Π—Π°Π΄Π°Π½ΠΈΠ΅ 37 посвящСно ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ виртуализация ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списков +author: thomas-laforge +contributors: + - tomalaforge + - jdegand +challengeNumber: 37 +command: performance-ngfor-biglist +sidebar: + order: 117 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +Π’ этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ список ΠΈΠ· 100 000 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ **loadList**. Если Π²Ρ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ панСль Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Chrome, Π½Π°ΠΆΠ°Π² **F12**, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Source ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ элСмСнт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ список, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ всС 100 000 элСмСнтов ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² DOM, хотя ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΊΠΎΠ»ΠΎ 20 элСмСнтов Π² Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ области. Π­Ρ‚ΠΎΡ‚ процСсс Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, поэтому ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ список. + +ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Angular DevTool, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ нашСго прилоТСния. Π― ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ. + + + +:::note +Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, сначала ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ [Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ](/challenges/performance/) ΠΈ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ послС этого. +::: + +## Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ + +ЦСль этого испытания - Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ для отобраТСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списков элСмСнтов. + +## Подсказки: + +
+ Подсказка 1 + +Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Angular CDK ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ](https://material.angular.io/cdk/scrolling/overview). + +
diff --git a/docs/src/content/docs/ru/challenges/performance/index.mdx b/docs/src/content/docs/ru/challenges/performance/index.mdx new file mode 100644 index 0000000..cbda247 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/performance/index.mdx @@ -0,0 +1,52 @@ +--- +title: ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Angular-Π° +prev: false +next: false +contributors: + - tomalaforge + - tomer953 +description: Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Angular DevTools для Chrome. +noCommentSection: true +sidebar: + order: 1 +--- + +import { LinkCard } from '@astrojs/starlight/components'; + +Π’ этой сСрии испытаний ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСго прилоТСния Angular. + +ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ испытания, я ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ вас ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ [Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Angular DevTools для Chrome](https://chrome.google.com/webstore/detail/angular-devtools/ienfalfjdbdpebioblfackkekamfmbnh), Ссли Π²Ρ‹ Π΅Ρ‰Π΅ этого Π½Π΅ сдСлали. + +Π­Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ позволяСт ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для понимания мСст, Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. + +## Как Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ + +ΠŸΡ€ΠΈ запускС прилоТСния Angular Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ страницу, Π½Π°ΠΆΠ°Π² F12, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Chrome. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Angular. ΠžΡ‚Ρ‚ΡƒΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Profiler, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅. + +![Π²ΠΊΠ»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°](../../../../assets/performance/profiler-tab.png 'Π’ΠΊΠ»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°') + +Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ записи. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ с вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° срабатываСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ. + +:::tip[Π£Π·Π½Π°ΠΉΡ‚Π΅ большС] +Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС Π½Π° [страницС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ](https://angular.io/guide/devtools). +::: + +Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Angular DevTool, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ испытаниС, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ. + + + + + + diff --git a/docs/src/content/docs/ru/challenges/rxjs/11-bug-chaining-operator.md b/docs/src/content/docs/ru/challenges/rxjs/11-bug-chaining-operator.md new file mode 100644 index 0000000..93ec45d --- /dev/null +++ b/docs/src/content/docs/ru/challenges/rxjs/11-bug-chaining-operator.md @@ -0,0 +1,31 @@ +--- +title: 🟠 Ошибка Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка RxJS +description: Π—Π°Π΄Π°Ρ‡Π° 11 посвящСна ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ошибки Π² RxJS ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка +author: thomas-laforge +contributors: + - tomalaforge +challengeNumber: 11 +command: rxjs-pipe-bug +sidebar: + order: 114 +--- + +Π”Π°Π²Π°ΠΉΡ‚Π΅ погрузимся Π² ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€ RxJs. + +Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ² Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ. + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +### Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ + +Нам Π½ΡƒΠΆΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ `Π’Π΅ΠΌΡ‹`. Когда ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° Π½Π΅Π΅, ΠΌΡ‹ удаляСм всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с этой `Π’Π΅ΠΌΠΎΠΉ` Π² нашСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… _(ЀСйковая Π‘Π” Π² нашСм случаС)_. НаконСц, ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ **ВсС [Ρ‚Π΅ΠΌΡ‹] Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹** Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ удалСния ΠΈΠ»ΠΈ **Ошибка: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… [Ρ‚Π΅ΠΌ] Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ** Ссли ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ. + +### ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ: + +ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² Π½Π°ΡˆΡƒ Π‘Π” для удалСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π° Ρ€Π°Π·. Π‘Π” ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ true, Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, ΠΈ false Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. + +### Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ + +Команда тСстировщиков сообщаСт ΠΎΠ± **ошибкС**. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ всСгда ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ **ВсС [Ρ‚Π΅ΠΌΡ‹] Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹**, Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ удалСния Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ. + +πŸ‘‰ НайдитС ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π΅Π΅. diff --git a/docs/src/content/docs/ru/challenges/rxjs/38-rxjs-catch-error.md b/docs/src/content/docs/ru/challenges/rxjs/38-rxjs-catch-error.md new file mode 100644 index 0000000..3799170 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/rxjs/38-rxjs-catch-error.md @@ -0,0 +1,36 @@ +--- +title: 🟒 catchError +description: Π—Π°Π΄Π°Ρ‡Π° 38 посвящСня ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Observable. +author: devesh-chaudhari +command: rxjs-catch-error +contributors: + - DeveshChau + - tomalaforge +challengeNumber: 38 +sidebar: + order: 14 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +### Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ + +НашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдставляСт собой Ρ„ΠΎΡ€ΠΌΡƒ с ΠΏΠΎΠ»Π΅ΠΌ Π²Π²ΠΎΠ΄Π° тСкста ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ". ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ" Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· [бСсплатного API](https://jsonplaceholder.typicode.com/). + +ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ значСния для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ: posts, comments, albums, photos, todos ΠΈ users. Π›ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ ошибкС. + +### Ошибка + +Π’ нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ нСдопустимый запрос. ПослС получСния ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΠ± ошибкС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ запросы. + +### Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ + +Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° [`catchError`](https://rxjs.dev/api/operators/catchError). Если ΠΎΠ½ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, вся подписка Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов. ЦСль состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ подписку, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ обрабатывая увСдомлСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Observable. + +## Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ + +ЦСль - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catchError для управлСния ошибками Π²Π½ΡƒΡ‚Ρ€ΠΈ вашСго ΠΏΠΎΡ‚ΠΎΠΊΠ° Rxjs. + +## ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ + +ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅/ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ". diff --git a/docs/src/content/docs/ru/challenges/testing/17-router.md b/docs/src/content/docs/ru/challenges/testing/17-router.md new file mode 100644 index 0000000..5dc0934 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/testing/17-router.md @@ -0,0 +1,27 @@ +--- +title: 🟠 Π ΠΎΡƒΡ‚Π΅Ρ€ +description: Π—Π°Π΄Π°Ρ‡Π° 17 посвящСна Ρ‚Π΅ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π ΠΎΡƒΡ‚Π΅Ρ€Π° +author: thomas-laforge +contributors: + - tomalaforge +challengeNumber: 17 +command: testing-router-outlet +sidebar: + order: 108 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +Π£ нас Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ доступныС ΠΊΠ½ΠΈΠ³ΠΈ для Π²Ρ‹Π΄Π°Ρ‡ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Если ΠΊΠ½ΠΈΠ³Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅, доступна, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ(ΠΈ), Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚Π΅ Π½Π° страницу ошибки. + +Π€Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ `app.component.spec.ts` ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ тСстов, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx test testing-router-outlet`. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ [Jest Runner](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСсты, щСлкая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ `Run` Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ `describe` ΠΈΠ»ΠΈ `it`. + +Для тСстирования с использованиСм Cypress Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои тСсты Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° `app.component.cy.ts` ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx component-test testing-router-outlet` для выполнСния Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ `--watch`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ваши тСсты Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ наблюдСния. + +# Π—Π°Π΄Π°Π½ΠΈΠ΅ + +ЦСль - ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ прилоТСния, описанных Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстовом Ρ„Π°ΠΉΠ»Π΅, с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library ΠΈ Cypress Component Testing. + +:::note +Π― создал нСсколько Π±Π»ΠΎΠΊΠΎΠ² `it`, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС тСстов, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. +::: diff --git a/docs/src/content/docs/ru/challenges/testing/18-nested-comp.md b/docs/src/content/docs/ru/challenges/testing/18-nested-comp.md new file mode 100644 index 0000000..6922875 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/testing/18-nested-comp.md @@ -0,0 +1,31 @@ +--- +title: 🟠 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ +description: Π—Π°Π΄Π°Π½ΠΈΠ΅ 18 посвящСно Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² +author: thomas-laforge +contributors: + - tomalaforge +challengeNumber: 18 +command: testing-nested +sidebar: + order: 109 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +Π£ нас Π΅ΡΡ‚ΡŒ нСбольшоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ отправляСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, Π½Π° Ρ„Π΅ΠΉΠΊΠΎΠ²Ρ‹ΠΉ бэкэнд. +Если Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Π²Π΅Π΄Π΅Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΈ запрос Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½. +ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ создано с использованиСм Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². `ChildComponent` - это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: `ResultComponent`, `ButtonComponent`, `InputComponent` ΠΈ `ErrorComponent`. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ тСстируСм наш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСт. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои тСсты, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ структуру ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈ ваши тСсты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Π’ΠΎΡ‚ Ρ†Π΅Π»ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов. Никогда Π½Π΅ тСстируйтС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ!!!. + +Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ с Π½ΠΈΠΌ, запустив: `npx nx serve testing-nested`. + +Π€Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ `child.component.spec.ts` ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ тСстов, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx test testing-nested`. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ [Jest Runner](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСсты, щСлкая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ `Run` Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ `describe` ΠΈΠ»ΠΈ `it`. + +Для тСстирования с использованиСм Cypress Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои тСсты Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° `child.component.cy.ts` ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx component-test testing-nested` для выполнСния Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ `--watch`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ваши тСсты Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ наблюдСния. + +# Π—Π°Π΄Π°Π½ΠΈΠ΅ + +ЦСль - ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ прилоТСния, описанных Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстовом Ρ„Π°ΠΉΠ»Π΅, с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library ΠΈ Cypress Component Testing. + +:::note +Π― создал нСсколько Π±Π»ΠΎΠΊΠΎΠ² `it`, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС тСстов, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. +::: diff --git a/docs/src/content/docs/ru/challenges/testing/19-input-output.md b/docs/src/content/docs/ru/challenges/testing/19-input-output.md new file mode 100644 index 0000000..a8cffa7 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/testing/19-input-output.md @@ -0,0 +1,32 @@ +--- +title: 🟠 Π’Π²ΠΎΠ΄ Π’Ρ‹Π²ΠΎΠ΄ +description: Π—Π°Π΄Π°Ρ‡Π° 19 посвящСна Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π’Π²ΠΎΠ΄Π° ΠΈ Π’Ρ‹Π²ΠΎΠ΄Π° +author: thomas-laforge +contributors: + - tomalaforge + - tomer953 + - svenson95 + - jdegand +challengeNumber: 19 +command: testing-input-output +sidebar: + order: 110 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +Π£ нас Π΅ΡΡ‚ΡŒ нСбольшоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-счСтчик, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ число. `CounterComponent` ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² качСствС `@Input` ΠΈ отправляСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ счСтчика ΠΊΠ°ΠΊ `@Output`, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ **Send**. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ тСстируСм наш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик, Ρƒ нас Π΅ΡΡ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ нашим Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΡ‹ ΡΠ»ΡƒΡˆΠ°Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ значСния. НС слСдуСт ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ!!! + +Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ с Π½ΠΈΠΌ, запустив: `npx nx serve testing-input-output`. + +Π€Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ `counter.component.spec.ts` ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ тСстов, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx test testing-input-output`. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ [Jest Runner](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСсты, щСлкая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ `Run` Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ `describe` ΠΈΠ»ΠΈ `it`. + +Для тСстирования с использованиСм Cypress Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои тСсты Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° `child.component.cy.ts` ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx component-test testing-input-output` для выполнСния Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ `--watch`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ваши тСсты Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ наблюдСния. + +# Π—Π°Π΄Π°Π½ΠΈΠ΅ + +ЦСль - ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ прилоТСния, описанных Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстовом Ρ„Π°ΠΉΠ»Π΅, с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library ΠΈ Cypress Component Testing. + +:::note +Π― создал нСсколько Π±Π»ΠΎΠΊΠΎΠ² `it`, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС тСстов, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. +::: diff --git a/docs/src/content/docs/ru/challenges/testing/20-modal.md b/docs/src/content/docs/ru/challenges/testing/20-modal.md new file mode 100644 index 0000000..897aa66 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/testing/20-modal.md @@ -0,0 +1,36 @@ +--- +title: 🟠 МодальноС ΠΎΠΊΠ½ΠΎ +description: Π—Π°Π΄Π°Ρ‡Π° 20 посвящСна Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠœΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΠ½ +author: thomas-laforge +contributors: + - tomalaforge + - tomer953 + - svenson95 + - jdegand +challengeNumber: 20 +command: testing-modal +sidebar: + order: 111 +--- + +## Information + +Π’ этом нСбольшом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ввСсти имя, ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° **Confirm** для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡ‹. +Если Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ имя, появится модальноС ΠΎΠΊΠ½ΠΎ подтвСрТдСния; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ модальноС ΠΎΠΊΠ½ΠΎ с ошибкой. +Π’ модальном ΠΎΠΊΠ½Π΅ подтвСрТдСния, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ **Confirm**, появится сообщСниС с ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡ‹. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ **Cancel**, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ сообщСниС ΠΎΠ± ошибкС. + +ЦСль этого Π²Ρ‹Π·ΠΎΠ²Π° - ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ вашСго прилоТСния. Для этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всё ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ end-to-end тСст. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ `AppComponent` ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° события Π½Π° страницС. НС слСдуСт Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ. Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ e2e тСстом ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ тСстом Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ всС Π²Ρ‹Π·ΠΎΠ²Ρ‹ API. _(ВсС http-запросы Ρ„Π°Π»ΡŒΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого прилоТСния ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Ρ‚Π΅Ρ… Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.)_ + +Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ с этим, запустив: `npx nx serve testing-modal`. + +Π€Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ `app.component.spec.ts` ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ тСстов, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx test testing-modal`. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ [Jest Runner](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСсты, щСлкая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ `Run` Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ `describe` ΠΈΠ»ΠΈ `it`. + +Для тСстирования с использованиСм Cypress Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои тСсты Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° `app.component.cy.ts` ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `npx nx component-test testing-modal` для выполнСния Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ `--watch`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ваши тСсты Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ наблюдСния. + +# Π—Π°Π΄Π°Π½ΠΈΠ΅ + +ЦСль - ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ прилоТСния, описанных Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстовом Ρ„Π°ΠΉΠ»Π΅, с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing Library ΠΈ Cypress Component Testing. + +:::note +Π― создал нСсколько Π±Π»ΠΎΠΊΠΎΠ² `it`, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС тСстов, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. +::: diff --git a/docs/src/content/docs/ru/challenges/testing/24-harness-creation.md b/docs/src/content/docs/ru/challenges/testing/24-harness-creation.md new file mode 100644 index 0000000..8865ccb --- /dev/null +++ b/docs/src/content/docs/ru/challenges/testing/24-harness-creation.md @@ -0,0 +1,48 @@ +--- +title: 🟠 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тСстового стСнда +description: Π—Π°Π΄Π°Π½ΠΈΠ΅ 24 посвящСно созданию ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° тСстового стСнда. +author: thomas-laforge +contributors: + - tomalaforge + - tomer953 + - jdegand +challengeNumber: 24 +command: testing-create-harness +sidebar: + order: 112 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +ЦСль этого Π²Ρ‹Π·ΠΎΠ²Π° - ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСстовый стСнд для `slider.component.ts`. Π€Π°ΠΉΠ» стСнда, `slider.harness.ts`, ΡƒΠΆΠ΅ создан. + +НСобходимо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ API: + +```ts + async clickPlus(): Promise ; + + async clickMinus(): Promise; + + async getValue(): Promise ; + + async getMinValue(): Promise; + + async disabled(): Promise; + + async setValue(value: number): Promise; +``` + +ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ `HarnessPredicate` с ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ свойством `minValue`. + +```ts + static with( + this: ComponentHarnessConstructor, + options: SliderHarnessFilters = {} + ): HarnessPredicate; +``` + +НаконСц, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ тСстов для app.component. НСкоторыС тСсты ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΠΆΠ΅ написаны, Π½ΠΎ Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ тСстов, сколько Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² стСнда, сколько Π²Π°ΠΌ потрСбуСтся. + +> ДокумСнтация Angular Material доступна [здСсь](https://material.angular.io/cdk/test-harnesses/overview). + +Π£Π΄Π°Ρ‡ΠΈ !!! πŸ’ͺ diff --git a/docs/src/content/docs/ru/challenges/testing/29-real-application.md b/docs/src/content/docs/ru/challenges/testing/29-real-application.md new file mode 100644 index 0000000..046e8b1 --- /dev/null +++ b/docs/src/content/docs/ru/challenges/testing/29-real-application.md @@ -0,0 +1,37 @@ +--- +title: πŸ”΄ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ +description: Π—Π°Π΄Π°Ρ‡Π° 29 посвящСна Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ прилоТСния ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ +author: thomas-laforge +contributors: + - tomalaforge + - tomer953 + - svenson95 +challengeNumber: 29 +command: testing-todos-list +sidebar: + order: 205 +--- + +## Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ + +Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдставляСт собой большой Π²Ρ‹Π·ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ тСсно Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ Π² своСй повсСднСвной Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² качСствС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Angular. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТным, Ρ‚Π°ΠΊ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ асинхронныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ. + +ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ - это Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для списка Π·Π°Π΄Π°Ρ‡. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ заявки, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅, Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ заявку, Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ дСталям ΠΊΠ°ΠΆΠ΄ΠΎΠΉ заявки. + +Π’ этом Π²Ρ‹Π·ΠΎΠ²Π΅ Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ тСсты для `ListComponent`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄, ΠΈ `RowComponent`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ заявку. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты для `TicketStoreService`, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Testing Library. _Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° позволяСт эффСктивно Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвисы._ + +ОсобСнно слоТно Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ асинхронныС Π·Π°Π΄Π°Ρ‡ΠΈ. Π’Π°ΠΆΠ½ΠΎ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ явныС оТидания(waits) Π² ваши тСсты, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ. ВмСсто этого Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΈΡΡ‡Π΅Π·Π½ΡƒΡ‚ΡŒ ΠΈΠ· DOM. Π’ этом случаС тСст Π±ΡƒΠ΄Π΅Ρ‚ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ оТидания ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΠ±Π΅ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ встроСнными Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями для создания эффСктивных ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… тСстов. + +Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ с этим, запустив: `npx nx serve testing-todos-list`. + +Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСсты Testing Library, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ `npx nx test testing-todos-list`. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ [Jest Runner](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСсты, наТимая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ `Run` Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ `describe` ΠΈΠ»ΠΈ `it`. + +Для тСстирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Cypress Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ свой тСст Π²Π½ΡƒΡ‚Ρ€ΠΈ `child.component.cy.ts` ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ `npx nx component-test testing-todos-list`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ваши тСстовыС Π½Π°Π±ΠΎΡ€Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ `--watch`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСсты Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ наблюдСния. + +# Π—Π°Π΄Π°Π½ΠΈΠ΅ + +ЦСль - ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ прилоТСния, описанных Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстовом Ρ„Π°ΠΉΠ»Π΅, с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Testing ΠΈ Cypress Component Testing. + +:::note +Π― создал нСсколько Π±Π»ΠΎΠΊΠΎΠ² `it`, Π½ΠΎ Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ большС тСстов, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. +:::