From 9de14ac12bf3ddc66426f636400f8b04eac657af Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Sun, 1 Mar 2020 20:22:10 +0200 Subject: [PATCH 01/17] Start translation of tests with mocha --- .../05-testing-mocha/article.md | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 68ffcae4d..35543bf75 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -1,54 +1,55 @@ -# Automated testing with Mocha +# Автоматичне тестування за допомогою Mocha -Automated testing will be used in further tasks, and it's also widely used in real projects. +Автоматичне тестування буде використовуватися у настпуних завданнях, і воно широко використовується у реальних проектах. -## Why we need tests? +## Навіщо нам потрібні тести? -When we write a function, we can usually imagine what it should do: which parameters give which results. +Коли ми пишемо функцію, ми можемо уявити, як її будуть використовувати - які параметри дають який результат. -During development, we can check the function by running it and comparing the outcome with the expected one. For instance, we can do it in the console. +Під час розробки ми можемо перевірити функцію, запускаючи її та перевіряючи фактичний результат з очікуваним. Наприклад, ми можемо робити це у консолі. -If something is wrong -- then we fix the code, run again, check the result -- and so on till it works. +Якщо результат не вірний -- ми можемо підправити код, запустити її знову, перевірити результат знову, і так до тих пір, поки вона не працюватиме вірно. -But such manual "re-runs" are imperfect. +Але такі ручні "перезапуски" недосконалі. -**When testing a code by manual re-runs, it's easy to miss something.** +**Тестуючи код вручну, можна легко щось упустити.** -For instance, we're creating a function `f`. Wrote some code, testing: `f(1)` works, but `f(2)` doesn't work. We fix the code and now `f(2)` works. Looks complete? But we forgot to re-test `f(1)`. That may lead to an error. +Наприклад, ми створили функцію `f`. Перевірили деякий код, тестуємо: `f(1)` працює, але `f(2)` не працює. Ми підправляємо код і тепер `f(2)` працює. Здається, що справу зроблено? Але ми забули перевірити чи `f(1)` досі працює. Це може призвести до помилки. -That's very typical. When we develop something, we keep a lot of possible use cases in mind. But it's hard to expect a programmer to check all of them manually after every change. So it becomes easy to fix one thing and break another one. +Це дуже типово. Коли ми щось розробляємо, ми пам’ятаємо про багато можливих випадків використання. Але не треба очікувати, що програміст перевірятиме їх усі вручну після кожної зміни. Так стає легко виправити одне і зламати інше. -**Automated testing means that tests are written separately, in addition to the code. They run our functions in various ways and compare results with the expected.** +**Автоматизоване тестування означає, що тести пишуться окремо від основного коду, доповнюючи його. Вони запускають наші функції різними способами і порівнюють результати з очікуваними.** -## Behavior Driven Development (BDD) +## Керована поведінкою розробка (BDD) -Let's start with a technique named [Behavior Driven Development](http://en.wikipedia.org/wiki/Behavior-driven_development) or, in short, BDD. +Давайте розпочнемо з техніки під назвою [Керована поведінкою розробка](https://uk.wikipedia.org/wiki/%D0%9A%D0%B5%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B0_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D1%96%D0%BD%D0%BA%D0%BE%D1%8E_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0) або коротко, BDD (від англ. behavior-driven development). -**BDD is three things in one: tests AND documentation AND examples.** +**BDD це три в одному: і тести, і документація, і приклади використання.** -To understand BDD, we'll examine a practical case of development. +Щоб зрозуміти BDD, ми розглянемо реальний приклад розробки. -## Development of "pow": the spec +## Розробка функції піднесення до степеня - "pow": специфікація -Let's say we want to make a function `pow(x, n)` that raises `x` to an integer power `n`. We assume that `n≥0`. +Припустимо, ми хочемо зробити функцію `pow(x, n)`, яка піднесе `x` до степеня `n`. +Let's say we want to make a function `pow(x, n)` that raises `x` to an integer power `n` (`n` - ціле число). Ми припускаємо, що `n≥0`. -That task is just an example: there's the `**` operator in JavaScript that can do that, but here we concentrate on the development flow that can be applied to more complex tasks as well. +Це завдання є просто прикладом - в JavaScript є оператор `**`, що зводить до степеня, але в цьому прикладі ми зосередимось на процесі розробки, який потім можна також застосовувати і для більш складних завдань. -Before creating the code of `pow`, we can imagine what the function should do and describe it. +Перш ніж створити код для функції `pow ', ми можемо уявити, що вона повинна виконувати, і описати її. -Such description is called a *specification* or, in short, a spec, and contains descriptions of use cases together with tests for them, like this: +Такий опис називається *специфікацією*, і він описує приклади використання функції разом з тестами, наприклад: ```js describe("pow", function() { - it("raises to n-th power", function() { + it("підносить до n-нного степеня", function() { assert.equal(pow(2, 3), 8); }); }); ``` -A spec has three main building blocks that you can see above: +Як ви помітили, специфікація має три основні блоки: `describe("title", function() { ... })` : What functionality we're describing. In our case we're describing the function `pow`. Used to group "workers" -- the `it` blocks. @@ -269,11 +270,11 @@ For instance: ```js no-beautify describe("test", function() { - before(() => alert("Testing started – before all tests")); - after(() => alert("Testing finished – after all tests")); + before(() => alert("Тестування розпочато – до всіх тестів")); + after(() => alert("Тестування завершено – після всіх тестів")); - beforeEach(() => alert("Before a test – enter a test")); - afterEach(() => alert("After a test – exit a test")); + beforeEach(() => alert("До тесту – початок тесту")); + afterEach(() => alert("Після тесту – вихід з тесту")); it('test 1', () => alert(1)); it('test 2', () => alert(2)); From b8b98fc4272ec15f51f6361cfc79dccd05ff9aed Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Sun, 1 Mar 2020 21:16:08 +0200 Subject: [PATCH 02/17] continue translating mocha tests section --- .../05-testing-mocha/article.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 35543bf75..c2663128c 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -52,35 +52,35 @@ describe("pow", function() { Як ви помітили, специфікація має три основні блоки: `describe("title", function() { ... })` -: What functionality we're describing. In our case we're describing the function `pow`. Used to group "workers" -- the `it` blocks. +: Яку функціональність ми описуємо. В нашому випадку, ми описуємо функцію `pow`. Використовується для групування блоків `it`, які "виконують роботу". -`it("use case description", function() { ... })` -: In the title of `it` we *in a human-readable way* describe the particular use case, and the second argument is a function that tests it. +`it("підносить до n-нного степеня", function() { ... })` +: У першому аргументі (назві) `it` ми *людською мовою* описуємо конкретний спосіб використання функції, а другому аргументі пишемо функцію, яка тестуватиме цей спосіб. `assert.equal(value1, value2)` -: The code inside `it` block, if the implementation is correct, should execute without errors. +: Код, всереді блоку `it`, якщо реалізація правильна, повинен виконуватись без помилок. - Functions `assert.*` are used to check whether `pow` works as expected. Right here we're using one of them -- `assert.equal`, it compares arguments and yields an error if they are not equal. Here it checks that the result of `pow(2, 3)` equals `8`. There are other types of comparisons and checks, that we'll add later. + Функції `assert.*` використовуються для перевірки того, що функція `pow` працює, як ми очікуємо. В нашому випадку, ми використовуємо одну з них -- `assert.equal`, вона порівнює аргументи і сповіщає про помилку, якщо вони відрізняються. Тут вона перевіряє, що результат `pow(2, 3)` дорівнює `8`. Є також інші способи порівняння та перевірки, які ми розглянемо пізніше. -The specification can be executed, and it will run the test specified in `it` block. We'll see that later. +Специфікацію можна виконати, і вона запустить тести вказані у блоках `it`. Ми розглянемо це далі. -## The development flow +## Процес розробки -The flow of development usually looks like this: +Зазвичай, процес розробки має настпуний вигляд: -1. An initial spec is written, with tests for the most basic functionality. -2. An initial implementation is created. -3. To check whether it works, we run the testing framework [Mocha](http://mochajs.org/) (more details soon) that runs the spec. While the functionality is not complete, errors are displayed. We make corrections until everything works. -4. Now we have a working initial implementation with tests. -5. We add more use cases to the spec, probably not yet supported by the implementations. Tests start to fail. -6. Go to 3, update the implementation till tests give no errors. -7. Repeat steps 3-6 till the functionality is ready. +1. Пишуть первинну специфікацію з тестами основного функціонала. +2. Створюється початкова реалізація. +3. Щоб перевірити, чи вона працює, ми запускаємо тестовий фреймворк [Mocha](http://mochajs.org/) (більш детально нижче), який виконує специфікацію. Якщо функціонал не завершено - виводяться повідомлення про помилки. Ми робимо виправлення до тих пір, поки не матимемо повністю робочий код. +4. Тепер ми маємо початкову реалізацію з тестами. +5. Ми додаємо більше способів використання до специфікації, навіть таких, що поки що не підтримуються реалізацією. Запуск тестів знову завершиться невдачою. +6. Переходимо на 3-й пункт, змінюємо реалізацію, щоб вона відповідала тестам і вони не повертали повідомлення про помилку. +7. Повторюємо процес описаний у пунктах з 3-го по 6-ий поки функціонал не буде повністю готовий. -So, the development is *iterative*. We write the spec, implement it, make sure tests pass, then write more tests, make sure they work etc. At the end we have both a working implementation and tests for it. +Тобто, процес розробки є *ітеративним*. Ми пишемо специфікацію, реалізуємо її, переконуємось, що тести проходять, потім пишемо ще тести, переконуємось, що вони також проходять і т.д. Завершивши цей процес, ми маємо реалізований робочий функціонал і тести до нього. -Let's see this development flow in our practical case. +Давайте розглянемо цей процес розробки на нашому прикладі. -The first step is already complete: we have an initial spec for `pow`. Now, before making the implementation, let's use few JavaScript libraries to run the tests, just to see that they are working (they will all fail). +Перший пункт вже виконано - ми маємо первинну специфікацію для функції `pow`. Now, before making the implementation, let's use few JavaScript libraries to run the tests, just to see that they are working (they will all fail). ## The spec in action From 7e2c6b480d5a187effa509427b7421541a989569 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Tue, 3 Mar 2020 08:09:03 +0200 Subject: [PATCH 03/17] corrected wording based on the discussion #8 --- 1-js/03-code-quality/05-testing-mocha/article.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index c2663128c..6c89cda04 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -6,11 +6,11 @@ Коли ми пишемо функцію, ми можемо уявити, як її будуть використовувати - які параметри дають який результат. -Під час розробки ми можемо перевірити функцію, запускаючи її та перевіряючи фактичний результат з очікуваним. Наприклад, ми можемо робити це у консолі. +Під час розробки ми можемо перевірити функцію, виконуючи її та перевіряючи фактичний результат з очікуваним. Наприклад, ми можемо робити це у консолі. -Якщо результат не вірний -- ми можемо підправити код, запустити її знову, перевірити результат знову, і так до тих пір, поки вона не працюватиме вірно. +Якщо результат не вірний -- ми можемо підправити код, виконати її знову, перевірити результат знову, і так до тих пір, поки вона не працюватиме вірно. -Але такі ручні "перезапуски" недосконалі. +Але такі ручні "повторні виконання" недосконалі. **Тестуючи код вручну, можна легко щось упустити.** @@ -18,7 +18,7 @@ Це дуже типово. Коли ми щось розробляємо, ми пам’ятаємо про багато можливих випадків використання. Але не треба очікувати, що програміст перевірятиме їх усі вручну після кожної зміни. Так стає легко виправити одне і зламати інше. -**Автоматизоване тестування означає, що тести пишуться окремо від основного коду, доповнюючи його. Вони запускають наші функції різними способами і порівнюють результати з очікуваними.** +**Автоматизоване тестування означає, що тести пишуться окремо від основного коду, доповнюючи його. Вони виконують наші функції різними способами і порівнюють результати з очікуваними.** ## Керована поведінкою розробка (BDD) @@ -62,7 +62,7 @@ describe("pow", function() { Функції `assert.*` використовуються для перевірки того, що функція `pow` працює, як ми очікуємо. В нашому випадку, ми використовуємо одну з них -- `assert.equal`, вона порівнює аргументи і сповіщає про помилку, якщо вони відрізняються. Тут вона перевіряє, що результат `pow(2, 3)` дорівнює `8`. Є також інші способи порівняння та перевірки, які ми розглянемо пізніше. -Специфікацію можна виконати, і вона запустить тести вказані у блоках `it`. Ми розглянемо це далі. +Специфікацію можна виконати, і вона у свою чергу виконає тести вказані у блоках `it`. Ми розглянемо це далі. ## Процес розробки @@ -70,11 +70,11 @@ describe("pow", function() { 1. Пишуть первинну специфікацію з тестами основного функціонала. 2. Створюється початкова реалізація. -3. Щоб перевірити, чи вона працює, ми запускаємо тестовий фреймворк [Mocha](http://mochajs.org/) (більш детально нижче), який виконує специфікацію. Якщо функціонал не завершено - виводяться повідомлення про помилки. Ми робимо виправлення до тих пір, поки не матимемо повністю робочий код. +3. Щоб перевірити, чи вона працює, ми використовуємо тестовий фреймворк [Mocha](http://mochajs.org/) (більш детально нижче), який виконує специфікацію. Якщо функціонал не завершено - виводяться повідомлення про помилки. Ми робимо виправлення до тих пір, поки не матимемо повністю робочий код. 4. Тепер ми маємо початкову реалізацію з тестами. -5. Ми додаємо більше способів використання до специфікації, навіть таких, що поки що не підтримуються реалізацією. Запуск тестів знову завершиться невдачою. +5. Ми додаємо більше способів використання до специфікації, навіть таких, що поки що не підтримуються реалізацією. Виконання тестів знову завершиться невдачою. 6. Переходимо на 3-й пункт, змінюємо реалізацію, щоб вона відповідала тестам і вони не повертали повідомлення про помилку. -7. Повторюємо процес описаний у пунктах з 3-го по 6-ий поки функціонал не буде повністю готовий. +7. Повторюємо процес, описаний у пунктах з 3-го по 6-ий, поки функціонал не буде повністю готовий. Тобто, процес розробки є *ітеративним*. Ми пишемо специфікацію, реалізуємо її, переконуємось, що тести проходять, потім пишемо ще тести, переконуємось, що вони також проходять і т.д. Завершивши цей процес, ми маємо реалізований робочий функціонал і тести до нього. From b37acff53a48daf1d62bced3e1b83eb74a72613d Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Tue, 3 Mar 2020 10:16:13 +0200 Subject: [PATCH 04/17] continue translating mocha tests section --- 1-js/03-code-quality/05-testing-mocha/article.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 6c89cda04..bdd8fabda 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -80,14 +80,14 @@ describe("pow", function() { Давайте розглянемо цей процес розробки на нашому прикладі. -Перший пункт вже виконано - ми маємо первинну специфікацію для функції `pow`. Now, before making the implementation, let's use few JavaScript libraries to run the tests, just to see that they are working (they will all fail). +Перший пункт вже виконано - ми маємо первинну специфікацію для функції `pow`. Теперр, перед початком реалізації, давайте використаємо декілька бібліотек JavaScript для виконання тестів, щоб перевірити, що вони працюютть (вони всі завершаться невдачою). -## The spec in action +## Специфікація в дії -Here in the tutorial we'll be using the following JavaScript libraries for tests: +Тут у посібнику ми будемо використовувати такі бібліотеки JavaScript для тестів: -- [Mocha](http://mochajs.org/) -- the core framework: it provides common testing functions including `describe` and `it` and the main function that runs tests. -- [Chai](http://chaijs.com) -- the library with many assertions. It allows to use a lot of different assertions, for now we need only `assert.equal`. +- [Mocha](http://mochajs.org/) -- базовий фреймворк: він забезпечує нас загальними функціями для тестування, в тому числі `describe` та `it`, а також головною функцією, що виконує тести. +- [Chai](http://chaijs.com) -- бібліотека з багатьма припущеннями. Вона дозволяє використовувати безліч різних припущень, але поки що на потрібне лише припущення `assert.equal`. - [Sinon](http://sinonjs.org/) -- a library to spy over functions, emulate built-in functions and more, we'll need it much later. These libraries are suitable for both in-browser and server-side testing. Here we'll consider the browser variant. From f3532cc3b4fb3846a3ed0c62969d397e9ea07749 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Thu, 5 Mar 2020 01:08:49 +0200 Subject: [PATCH 05/17] Finish translating main article for tests with Mocha --- .../05-testing-mocha/article.md | 202 +++++++++--------- 1 file changed, 101 insertions(+), 101 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index bdd8fabda..e9e87deb5 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -33,7 +33,7 @@ Припустимо, ми хочемо зробити функцію `pow(x, n)`, яка піднесе `x` до степеня `n`. Let's say we want to make a function `pow(x, n)` that raises `x` to an integer power `n` (`n` - ціле число). Ми припускаємо, що `n≥0`. -Це завдання є просто прикладом - в JavaScript є оператор `**`, що зводить до степеня, але в цьому прикладі ми зосередимось на процесі розробки, який потім можна також застосовувати і для більш складних завдань. +Це завдання є просто прикладом - в JavaScript є оператор `**`, що підносить до степеня, але в цьому прикладі ми зосередимось на процесі розробки, який потім можна також застосовувати і для більш складних завдань. Перш ніж створити код для функції `pow ', ми можемо уявити, що вона повинна виконувати, і описати її. @@ -87,57 +87,57 @@ describe("pow", function() { Тут у посібнику ми будемо використовувати такі бібліотеки JavaScript для тестів: - [Mocha](http://mochajs.org/) -- базовий фреймворк: він забезпечує нас загальними функціями для тестування, в тому числі `describe` та `it`, а також головною функцією, що виконує тести. -- [Chai](http://chaijs.com) -- бібліотека з багатьма припущеннями. Вона дозволяє використовувати безліч різних припущень, але поки що на потрібне лише припущення `assert.equal`. -- [Sinon](http://sinonjs.org/) -- a library to spy over functions, emulate built-in functions and more, we'll need it much later. +- [Chai](http://chaijs.com) -- бібліотека з багатьма припущеннями. Вона дозволяє використовувати безліч різних припущень, але поки що нам потрібне лише припущення `assert.equal`. +- [Sinon](http://sinonjs.org/) -- бібліотека для "шпигування" за функціями, емуляції вбудованих функцій тощо, нам це знадобиться набагато пізніше. -These libraries are suitable for both in-browser and server-side testing. Here we'll consider the browser variant. +Ці бібліотеки підходять як для тестування в браузері, так і на стороні сервера. Тут ми розглянемо варіант тестування в браузері. -The full HTML page with these frameworks and `pow` spec: +Повна HTML-сторінка з цими бібліотеками та специфікацією функції `pow`: ```html src="index.html" ``` -The page can be divided into five parts: +Сторінку можна розділити на п’ять частин: -1. The `` -- add third-party libraries and styles for tests. -2. The ` - + - + - +
- + diff --git a/1-js/03-code-quality/05-testing-mocha/pow-1.view/index.html b/1-js/03-code-quality/05-testing-mocha/pow-1.view/index.html index e48a8d3a2..115aa78ec 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-1.view/index.html +++ b/1-js/03-code-quality/05-testing-mocha/pow-1.view/index.html @@ -1,18 +1,18 @@ - + - + - + @@ -21,17 +21,17 @@ - + - +
- + diff --git a/1-js/03-code-quality/05-testing-mocha/pow-2.view/index.html b/1-js/03-code-quality/05-testing-mocha/pow-2.view/index.html index e8d6be23d..6307e577b 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-2.view/index.html +++ b/1-js/03-code-quality/05-testing-mocha/pow-2.view/index.html @@ -1,18 +1,18 @@ - + - + - + @@ -21,17 +21,17 @@ - + - +
- + diff --git a/1-js/03-code-quality/05-testing-mocha/pow-3.view/index.html b/1-js/03-code-quality/05-testing-mocha/pow-3.view/index.html index c71b0d5d5..f7e4eafc9 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-3.view/index.html +++ b/1-js/03-code-quality/05-testing-mocha/pow-3.view/index.html @@ -1,18 +1,18 @@ - + - + - + @@ -31,13 +31,13 @@ } - + - +
- + diff --git a/1-js/03-code-quality/05-testing-mocha/pow-4.view/index.html b/1-js/03-code-quality/05-testing-mocha/pow-4.view/index.html index c71b0d5d5..f7e4eafc9 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-4.view/index.html +++ b/1-js/03-code-quality/05-testing-mocha/pow-4.view/index.html @@ -1,18 +1,18 @@ - + - + - + @@ -31,13 +31,13 @@ } - + - +
- + diff --git a/1-js/03-code-quality/05-testing-mocha/pow-full.view/index.html b/1-js/03-code-quality/05-testing-mocha/pow-full.view/index.html index 076b1e5a9..9fa65b34f 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-full.view/index.html +++ b/1-js/03-code-quality/05-testing-mocha/pow-full.view/index.html @@ -1,18 +1,18 @@ - + - + - + @@ -32,13 +32,13 @@ } - + - +
- + diff --git a/1-js/03-code-quality/05-testing-mocha/pow-min.view/index.html b/1-js/03-code-quality/05-testing-mocha/pow-min.view/index.html index d82a79dca..5d94e85a9 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-min.view/index.html +++ b/1-js/03-code-quality/05-testing-mocha/pow-min.view/index.html @@ -1,18 +1,18 @@ - + - + - + @@ -21,17 +21,17 @@ - + - +
- + diff --git a/1-js/03-code-quality/05-testing-mocha/pow-nan.view/index.html b/1-js/03-code-quality/05-testing-mocha/pow-nan.view/index.html index 523ae25ec..b6556babd 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-nan.view/index.html +++ b/1-js/03-code-quality/05-testing-mocha/pow-nan.view/index.html @@ -1,18 +1,18 @@ - + - + - + @@ -29,13 +29,13 @@ } - + - +
- + From c301cac214f297423dec1abf73f6d1fedb887b67 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Thu, 5 Mar 2020 01:50:13 +0200 Subject: [PATCH 07/17] Add translations to test.js files used in test with mocha section --- .../05-testing-mocha/beforeafter.view/test.js | 8 ++++---- 1-js/03-code-quality/05-testing-mocha/pow-1.view/test.js | 2 +- 1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js | 4 ++-- 1-js/03-code-quality/05-testing-mocha/pow-3.view/test.js | 2 +- 1-js/03-code-quality/05-testing-mocha/pow-4.view/test.js | 6 +++--- .../05-testing-mocha/pow-full.view/test.js | 8 ++++---- .../03-code-quality/05-testing-mocha/pow-min.view/test.js | 2 +- .../03-code-quality/05-testing-mocha/pow-nan.view/test.js | 8 ++++---- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js b/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js index cad51d3ee..4c1ffc28c 100644 --- a/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js @@ -1,10 +1,10 @@ describe("test", function() { - before(() => alert("Testing started – before all tests")); - after(() => alert("Testing finished – after all tests")); + before(() => alert("Тестування розпочато – перед усіма тестами")); + after(() => alert("Тестування завершено – після всіх тестів")); - beforeEach(() => alert("Before a test – enter a test")); - afterEach(() => alert("After a test – exit a test")); + beforeEach(() => alert("Перед тестом – початок тесту")); + afterEach(() => alert("Після тесту – вихід з тесту")); it('test 1', () => alert(1)); it('test 2', () => alert(2)); diff --git a/1-js/03-code-quality/05-testing-mocha/pow-1.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-1.view/test.js index 89ba412ed..dbfef4ebf 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-1.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-1.view/test.js @@ -1,6 +1,6 @@ describe("pow", function() { - it("raises to n-th power", function() { + it("підносить до n-нного степеня", function() { assert.equal(pow(2, 3), 8); }); diff --git a/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js index c803f0e61..40634a999 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js @@ -1,10 +1,10 @@ describe("pow", function() { - it("2 raised to power 3 is 8", function() { + it("2 піднесене до степеня 3 дорівнює 8", function() { assert.equal(pow(2, 3), 8); }); - it("3 raised to power 4 is 81", function() { + it("3 піднесене до степеня 4 дорівнює 81", function() { assert.equal(pow(3, 4), 81); }); diff --git a/1-js/03-code-quality/05-testing-mocha/pow-3.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-3.view/test.js index 8663952aa..4652ea34c 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-3.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-3.view/test.js @@ -2,7 +2,7 @@ describe("pow", function() { function makeTest(x) { let expected = x * x * x; - it(`${x} in the power 3 is ${expected}`, function() { + it(`${x} піднесене до степеня 3 дорівнює ${expected}`, function() { assert.equal(pow(x, 3), expected); }); } diff --git a/1-js/03-code-quality/05-testing-mocha/pow-4.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-4.view/test.js index e5ce2ce43..5ff79b8d8 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-4.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-4.view/test.js @@ -1,10 +1,10 @@ describe("pow", function() { - describe("raises x to power 3", function() { + describe("підносить x до степеня 3", function() { function makeTest(x) { let expected = x * x * x; - it(`${x} in the power 3 is ${expected}`, function() { + it(`${x} піднесене до степеня 3 дорівнює ${expected}`, function() { assert.equal(pow(x, 3), expected); }); } @@ -15,5 +15,5 @@ describe("pow", function() { }); - // ... more tests to follow here, both describe and it can be added + // ... тут можна додати більше тестів з "describe" та "it" }); diff --git a/1-js/03-code-quality/05-testing-mocha/pow-full.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-full.view/test.js index 75ff5e99f..c357b4422 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-full.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-full.view/test.js @@ -1,10 +1,10 @@ describe("pow", function() { - describe("raises x to power 3", function() { + describe("підносить x до степеня 3", function() { function makeTest(x) { let expected = x * x * x; - it(`${x} in the power 3 is ${expected}`, function() { + it(`${x} піднесене до степеня 3 дорівнює ${expected}`, function() { assert.equal(pow(x, 3), expected); }); } @@ -15,11 +15,11 @@ describe("pow", function() { }); - it("if n is negative, the result is NaN", function() { + it("для недійсних n результатом є NaN", function() { assert.isNaN(pow(2, -1)); }); - it("if n is not integer, the result is NaN", function() { + it("для не цілих n результатом є NaN", function() { assert.isNaN(pow(2, 1.5)); }); diff --git a/1-js/03-code-quality/05-testing-mocha/pow-min.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-min.view/test.js index 89ba412ed..dbfef4ebf 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-min.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-min.view/test.js @@ -1,6 +1,6 @@ describe("pow", function() { - it("raises to n-th power", function() { + it("підносить до n-нного степеня", function() { assert.equal(pow(2, 3), 8); }); diff --git a/1-js/03-code-quality/05-testing-mocha/pow-nan.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-nan.view/test.js index 75ff5e99f..c357b4422 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-nan.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-nan.view/test.js @@ -1,10 +1,10 @@ describe("pow", function() { - describe("raises x to power 3", function() { + describe("підносить x до степеня 3", function() { function makeTest(x) { let expected = x * x * x; - it(`${x} in the power 3 is ${expected}`, function() { + it(`${x} піднесене до степеня 3 дорівнює ${expected}`, function() { assert.equal(pow(x, 3), expected); }); } @@ -15,11 +15,11 @@ describe("pow", function() { }); - it("if n is negative, the result is NaN", function() { + it("для недійсних n результатом є NaN", function() { assert.isNaN(pow(2, -1)); }); - it("if n is not integer, the result is NaN", function() { + it("для не цілих n результатом є NaN", function() { assert.isNaN(pow(2, 1.5)); }); From 84b4881e55b0ccc21f07cf3f75201623177a16c8 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Thu, 5 Mar 2020 02:02:28 +0200 Subject: [PATCH 08/17] Add translation for task & solution for test with mocha section; minor fixes for article translations --- .../3-pow-test-wrong/solution.md | 34 +++++++++---------- .../05-testing-mocha/3-pow-test-wrong/task.md | 8 ++--- .../05-testing-mocha/article.md | 6 ++-- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md b/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md index 4d0571b9d..215f14e3e 100644 --- a/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md +++ b/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md @@ -1,49 +1,49 @@ -The test demonstrates one of the temptations a developer meets when writing tests. +Тест демонструє одну із спокус, з якою стикається розробник, коли пише тести. -What we have here is actually 3 tests, but layed out as a single function with 3 asserts. +Що ми маємо тут, це насправді 3 тести, але вони були описані однією функцією з 3 припущеннями. -Sometimes it's easier to write this way, but if an error occurs, it's much less obvious what went wrong. +Іноді простіше написати таким чином, але якщо трапляється помилка, стає не очевидно, що пішло не так. -If an error happens in the middle of a complex execution flow, then we'll have to figure out the data at that point. We'll actually have to *debug the test*. +Якщо помилка трапляється посеред складного потоку виконання, то нам доведеться з’ясувати які були дані на той момент. Тобто, нам доведеться *налагоджувати тест*. -It would be much better to break the test into multiple `it` blocks with clearly written inputs and outputs. +Було б набагато краще розбити тест на кілька блоків `it` із чітко прописаними вхідними даними та результатами. -Like this: +Наприклад: ```js -describe("Raises x to power n", function() { - it("5 in the power of 1 equals 5", function() { +describe("Підносить до n-нного степеня", function() { + it("5 піднесене до степеня 1 дорівнює 5", function() { assert.equal(pow(5, 1), 5); }); - it("5 in the power of 2 equals 25", function() { + it("5 піднесене до степеня 2 дорівнює 25", function() { assert.equal(pow(5, 2), 25); }); - it("5 in the power of 3 equals 125", function() { + it("5 піднесене до степеня 3 дорівнює 125", function() { assert.equal(pow(5, 3), 125); }); }); ``` -We replaced the single `it` with `describe` and a group of `it` blocks. Now if something fails we would see clearly what the data was. +Ми замінили один блок `it` на `describe` і групу блоків `it`. Тепер, якщо виникає помилка, ми чітко бачимо, з якими даними вона виникає. -Also we can isolate a single test and run it in standalone mode by writing `it.only` instead of `it`: +Також ми можемо виділити один тест і запустити його в автономному режимі, написавши `it.only` замість` it`: ```js -describe("Raises x to power n", function() { - it("5 in the power of 1 equals 5", function() { +describe("Підносить x до n-нного степеня", function() { + it("5 піднесене до степеня 1 дорівнює 5", function() { assert.equal(pow(5, 1), 5); }); *!* - // Mocha will run only this block - it.only("5 in the power of 2 equals 25", function() { + // Mocha запустить лише цей блок + it.only("5 піднесене до степеня 2 дорівнює 25", function() { assert.equal(pow(5, 2), 25); }); */!* - it("5 in the power of 3 equals 125", function() { + it("5 піднесене до степеня 3 дорівнює 125", function() { assert.equal(pow(5, 3), 125); }); }); diff --git a/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/task.md b/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/task.md index 66fece09a..ffe4a8930 100644 --- a/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/task.md +++ b/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/task.md @@ -2,12 +2,12 @@ importance: 5 --- -# What's wrong in the test? +# Що не так з цим тестом? -What's wrong in the test of `pow` below? +Що не так з тестом функціій `pow`, вказаним нижче? ```js -it("Raises x to the power n", function() { +it("Підносить x до n-нного степеня", function() { let x = 5; let result = x; @@ -21,4 +21,4 @@ it("Raises x to the power n", function() { }); ``` -P.S. Syntactically the test is correct and passes. +P.S. Синтаксичних помилок не має і тести проходять. diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index e9e87deb5..f2bcb49e9 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -119,7 +119,7 @@ describe("pow", function() { ```js function pow(x, n) { - return 8; // :) це є обман! + return 8; // :) це обман! } ``` @@ -142,7 +142,7 @@ function pow(x, n) { ```js describe("pow", function() { - it("raises to n-th power", function() { + it("підносить до n-нного степеня", function() { assert.equal(pow(2, 3), 8); *!* assert.equal(pow(3, 4), 81); @@ -239,7 +239,7 @@ describe("pow", function() { function makeTest(x) { let expected = x * x * x; - it(`${x} in the power 3 is ${expected}`, function() { + it(`${x} піднесене до степеня 3 дорівнює ${expected}`, function() { assert.equal(pow(x, 3), expected); }); } From 213bf2f3e072b520c8315140b2e1b74e3f2cd587 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Thu, 5 Mar 2020 02:15:20 +0200 Subject: [PATCH 09/17] Fixes; extra missed translations --- .../05-testing-mocha/article.md | 2 +- .../05-testing-mocha/index.html | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index f2bcb49e9..4a3ddb49e 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -1,6 +1,6 @@ # Автоматичне тестування за допомогою Mocha -Автоматичне тестування буде використовуватися у настпуних завданнях, і воно широко використовується у реальних проектах. +Автоматичне тестування буде використовуватися у наступних завданнях, і воно широко використовується у реальних проектах. ## Навіщо нам потрібні тести? diff --git a/1-js/03-code-quality/05-testing-mocha/index.html b/1-js/03-code-quality/05-testing-mocha/index.html index 28a2ea62b..b1595f2e9 100644 --- a/1-js/03-code-quality/05-testing-mocha/index.html +++ b/1-js/03-code-quality/05-testing-mocha/index.html @@ -1,17 +1,17 @@ - + - + - + @@ -20,17 +20,17 @@ - + - +
- + From ce203c31d6566c8f9d1fa829216f593a0f862d03 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 01:46:28 +0200 Subject: [PATCH 10/17] Fixes to translations of tests with mocha section --- 1-js/03-code-quality/05-testing-mocha/article.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 4a3ddb49e..4f4e2abfc 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -6,19 +6,19 @@ Коли ми пишемо функцію, ми можемо уявити, як її будуть використовувати - які параметри дають який результат. -Під час розробки ми можемо перевірити функцію, виконуючи її та перевіряючи фактичний результат з очікуваним. Наприклад, ми можемо робити це у консолі. +Під час розробки ми можемо перевірити функцію, запустивши її та перевіряючи фактичний результат з очікуваним. Наприклад, ми можемо робити це у консолі. -Якщо результат не вірний -- ми можемо підправити код, виконати її знову, перевірити результат знову, і так до тих пір, поки вона не працюватиме вірно. +Якщо результат не вірний -- ми можемо підправити код, запустити її знову, перевірити результат знову, і так до тих пір, поки вона не працюватиме вірно. -Але такі ручні "повторні виконання" недосконалі. +Але такі ручні "повторні запуски" недосконалі. **Тестуючи код вручну, можна легко щось упустити.** Наприклад, ми створили функцію `f`. Перевірили деякий код, тестуємо: `f(1)` працює, але `f(2)` не працює. Ми підправляємо код і тепер `f(2)` працює. Здається, що справу зроблено? Але ми забули перевірити чи `f(1)` досі працює. Це може призвести до помилки. -Це дуже типово. Коли ми щось розробляємо, ми пам’ятаємо про багато можливих випадків використання. Але не треба очікувати, що програміст перевірятиме їх усі вручну після кожної зміни. Так стає легко виправити одне і зламати інше. +Це дуже типово. Коли ми щось розробляємо, ми пам’ятаємо про багато можливих випадків використання. Але не треба очікувати, що програміст перевірятиме їх усі вручну після кожної зміни. Так стає легко виправити щось одне і зламати інше. -**Автоматизоване тестування означає, що тести пишуться окремо від основного коду, доповнюючи його. Вони виконують наші функції різними способами і порівнюють результати з очікуваними.** +**Автоматизоване тестування означає, що тести пишуться окремо від основного коду, доповнюючи його. Вони запускають наші функції різними способами і порівнюють результати з очікуваними.** ## Керована поведінкою розробка (BDD) @@ -30,8 +30,7 @@ ## Розробка функції піднесення до степеня - "pow": специфікація -Припустимо, ми хочемо зробити функцію `pow(x, n)`, яка піднесе `x` до степеня `n`. -Let's say we want to make a function `pow(x, n)` that raises `x` to an integer power `n` (`n` - ціле число). Ми припускаємо, що `n≥0`. +Припустимо, ми хочемо зробити функцію `pow(x, n)`, яка піднесе `x` до степеня `n`. Ми припускаємо, що `n≥0`. Це завдання є просто прикладом - в JavaScript є оператор `**`, що підносить до степеня, але в цьому прикладі ми зосередимось на процесі розробки, який потім можна також застосовувати і для більш складних завдань. @@ -55,7 +54,7 @@ describe("pow", function() { : Яку функціональність ми описуємо. В нашому випадку, ми описуємо функцію `pow`. Використовується для групування блоків `it`, які "виконують роботу". `it("підносить до n-нного степеня", function() { ... })` -: У першому аргументі (назві) `it` ми *людською мовою* описуємо конкретний спосіб використання функції, а другому аргументі пишемо функцію, яка тестуватиме цей спосіб. +: У першому аргументі (назві) `it` ми описуємо *людською мовою* конкретний спосіб використання функції, а у другому аргументі пишемо функцію, яка тестуватиме цей спосіб. `assert.equal(value1, value2)` : Код, всереді блоку `it`, якщо реалізація правильна, повинен виконуватись без помилок. From f25dd1608d69b650ab1225240d2eb56364a5024e Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 23:46:46 +0200 Subject: [PATCH 11/17] Update 1-js/03-code-quality/05-testing-mocha/article.md Co-Authored-By: Taras --- 1-js/03-code-quality/05-testing-mocha/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 4f4e2abfc..45565ba42 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -1,6 +1,6 @@ # Автоматичне тестування за допомогою Mocha -Автоматичне тестування буде використовуватися у наступних завданнях, і воно широко використовується у реальних проектах. +Автоматичне тестування буде використовуватися у наступних завданнях, і воно широко використовується у реальних проєктах. ## Навіщо нам потрібні тести? From ef681b5f15088574f4bcc9e2dd279b7cb18fe4b1 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 23:47:35 +0200 Subject: [PATCH 12/17] Update 1-js/03-code-quality/05-testing-mocha/article.md nice point Co-Authored-By: Taras --- 1-js/03-code-quality/05-testing-mocha/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 45565ba42..5628903fd 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -22,7 +22,7 @@ ## Керована поведінкою розробка (BDD) -Давайте розпочнемо з техніки під назвою [Керована поведінкою розробка](https://uk.wikipedia.org/wiki/%D0%9A%D0%B5%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B0_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D1%96%D0%BD%D0%BA%D0%BE%D1%8E_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0) або коротко, BDD (від англ. behavior-driven development). +Давайте розпочнемо з техніки під назвою [Керована поведінкою розробка](https://uk.wikipedia.org/wiki/Керована_поведінкою_розробка) або коротко, BDD (від англ. behavior-driven development). **BDD це три в одному: і тести, і документація, і приклади використання.** From d076af10cb8af0d038f2b2acbc953582250d4e4e Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 23:47:44 +0200 Subject: [PATCH 13/17] Update 1-js/03-code-quality/05-testing-mocha/article.md Co-Authored-By: Taras --- 1-js/03-code-quality/05-testing-mocha/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 5628903fd..4ec81acbc 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -65,7 +65,7 @@ describe("pow", function() { ## Процес розробки -Зазвичай, процес розробки має настпуний вигляд: +Зазвичай, процес розробки має наступний вигляд: 1. Пишуть первинну специфікацію з тестами основного функціонала. 2. Створюється початкова реалізація. From 16874a3c26df37ef5b7e814668e53e6f1546940d Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 23:47:54 +0200 Subject: [PATCH 14/17] Update 1-js/03-code-quality/05-testing-mocha/article.md Co-Authored-By: Taras --- 1-js/03-code-quality/05-testing-mocha/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 4ec81acbc..d71452e9e 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -301,7 +301,7 @@ describe("test", function() { ## Розширення специфікації -Основна функціональність `pow` завершена. Перша ітерація розробки завершена. Відсвяткувавши та випивши шампанське, давайте продовжемо вдосконалювати її. +Основна функціональність `pow` завершена. Перша ітерація розробки завершена. Відсвяткувавши та випивши шампанське, давайте продовжемо вдосконалювати її. Як було сказано, функція `pow(x, n)` має працювати з додатними цілими значеннями `n`. From 4e8847c9671f59ffde4ffc2b371be545326795eb Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 23:48:11 +0200 Subject: [PATCH 15/17] Update 1-js/03-code-quality/05-testing-mocha/article.md Co-Authored-By: Taras --- 1-js/03-code-quality/05-testing-mocha/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index d71452e9e..f6ee5aed6 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -377,7 +377,7 @@ function pow(x, n) { В BDD спочатку пишуть специфікацію, потім реалізацію. В результаті ми маємо і специфікацію, і код реалізації. -Спеціалізацію можна використовувати трьома способами: +Специфікацію можна використовувати трьома способами: 1. Як **Тести** - вони гарантують, що код працює правильно. 2. Як **Документацію** -- назви `describe` та `it` описують, що робить функція. From e65007e9455b367541b553fe0aa6a01218bca8d9 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 23:48:36 +0200 Subject: [PATCH 16/17] Update 1-js/03-code-quality/05-testing-mocha/article.md Co-Authored-By: Taras --- 1-js/03-code-quality/05-testing-mocha/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index f6ee5aed6..9073aab68 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -385,7 +385,7 @@ function pow(x, n) { За допомогою специфікації ми можемо безпечно вдосконалювати, змінювати, навіть переписувати функцію з нуля і переконатись, що вона досі працює правильно. -Це особливо важливо для великих проектів, коли функція використовується в багатьох місцях. Коли ми змінюємо таку функцію, просто неможливо вручну перевірити, чи кожне місце, яке її використовує, все ще працює правильно. +Це особливо важливо для великих проєктів, коли функція використовується в багатьох місцях. Коли ми змінюємо таку функцію, просто неможливо вручну перевірити, чи кожне місце, яке її використовує, все ще працює правильно. Без тестів люди мають два варіанта: From 43d7b7a8ed9b954b760c8ccfb9ad18bd86130f31 Mon Sep 17 00:00:00 2001 From: Alex Galkin Date: Fri, 6 Mar 2020 23:48:45 +0200 Subject: [PATCH 17/17] Update 1-js/03-code-quality/05-testing-mocha/article.md Co-Authored-By: Taras --- 1-js/03-code-quality/05-testing-mocha/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index 9073aab68..5f0a48d41 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -394,7 +394,7 @@ function pow(x, n) { **Автоматичне тестування допомагає уникнути цих проблем!** -Якщо проект покритий тестами, такої проблеми просто немає. Після будь-яких змін ми можемо запустити тести і побачити безліч перевірок, зроблених за лічені секунди. +Якщо проєкт покритий тестами, такої проблеми просто немає. Після будь-яких змін ми можемо запустити тести і побачити безліч перевірок, зроблених за лічені секунди. **Крім того, добре перевірений код має кращу архітектуру.**