This commit is contained in:
Ilya Kantor 2017-02-19 01:41:36 +03:00
parent d7d25f4d8b
commit 20784e7f26
48 changed files with 302 additions and 397 deletions

View file

@ -1,8 +1,12 @@
Этот тест демонстрирует один из соблазнов, которые ожидают начинающего автора тестов.
The test demonstrates one of temptations a developer meets when writing tests.
Вместо того, чтобы написать три различных теста, он изложил их в виде одного потока вычислений, с несколькими `assert`.
What we have here is actually 3 tests, but layed out as a single function with 3 asserts.
Иногда так написать легче и проще, однако при ошибке в тесте гораздо менее очевидно, что же пошло не так.
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 inside a complex execution flow, then we'll have to figure out what was the data at that point.
TODO
Если в сложном тесте произошла ошибка где-то посередине потока вычислений, то придётся выяснять, какие конкретно были входные и выходные данные на этот момент, то есть по сути -- отлаживать код самого теста.

View file

@ -2,23 +2,23 @@ importance: 5
---
# Что не так в тесте?
# What's wrong in the test?
Что не так в этом тесте функции `pow`?
What's wrong in the test of `pow` below?
```js
it("Возводит x в степень n", function() {
var x = 5;
it("Raises x to the power n", function() {
let x = 5;
var result = x;
let result = x;
assert.equal(pow(x, 1), result);
var result *= x;
result *= x;
assert.equal(pow(x, 2), result);
var result *= x;
result *= x;
assert.equal(pow(x, 3), result);
});
```
P.S. Синтаксически он верен и работает, но спроектирован неправильно.
P.S. Syntactically it's correct and passes.