julia_v_iluhina

Untitled

Nov 13th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.69 KB | None | 0 0
  1.  private void activeTasksCount() {
  2.         $("#todo-count>strong").shouldHave(exactText(Integer.toString(tasks.filter(cssClass("active")).size())));
  3.  }
  4. /*
  5.     такая проверка - однозначный перебор
  6.  
  7.     причем - сразу по нескольким причинам
  8.  
  9.     первое
  10.         мы сами - полностью контролируем тестовую ситуацию
  11.         и знаем - сколько активных тасок должно быть в каждый момент времени в списке
  12.         потому - мы в состоянии написать гораздо более простой код
  13.         $("#todo-count>strong").shouldHave(exactText(Integer.toString(4)));
  14.         ну или не 4, а какое-то другое конкретное значение, которое соответствует тестовой ситуации
  15.         Если что-то можно сделать проще - надо так делать
  16.  
  17.     второе
  18.      допустим, проверка  $("#todo-count>strong").shouldHave(exactText(Integer.toString(tasks.filter(cssClass("active")).size())));
  19.      падает с некой ошибкой
  20.      вопрос - ты можешь быстро и точно определить - что неверно
  21.         - значение в счетчике items left
  22.         - количество тасок в списке (с классом active)?
  23.      еще вопрос - как считаешь, могут такие вещи поломаться одновременно и по-разному?
  24.      Мы, реализуя проверку состояния одних элементов, опираясь на состояние других элементов
  25.      полагаем, что вот состояние других = верное
  26.      а это может быть далеко не так
  27.      Получается - что корректность этой нашей проверки зависит от правильности состояния списка тасок
  28.      т е - наша проверка зависима от разных факторов
  29.  
  30.     третье
  31.      имя метода- проверки - начинай с assert
  32.      https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.sswzyp7qkm9o
  33.  
  34.      если есть термины на UI, которые можно переиспользовать в названии -
  35.      надо их переиспользовать
  36.      т к это наиболее наглядный и понятный термин
  37.  
  38.      в данном случае - assertItemsLeft - будет наиболее корректно
  39.  
  40.     четвертое
  41.      сравни
  42.      assertItemsLeft()
  43.      или
  44.      assertItemsLeft(4)
  45.      Во втором случае - гораздо понятнее, что мы проверяем и каковы наши ожидания
  46.  
  47.      глядя на вызов activeTasksCount() - очень тяжело догадаться только по названию метода
  48.         что метод - это проверка
  49.         что он проверяет состояние счетчика Items Left
  50.         на какие значения рассчитывает эта проверка
  51.  
  52.      Это слишком не KISS, слишком зависимо и слишком неточно
  53.  
  54.      Я писала в прошлых ревью другое
  55.      пересмотри их
  56.  
  57.      Да и следующие видео ты уже просмотрел и таких вопросов уже быть не должно
  58.      Возможно - стоит еще раз пересмотреть видео
  59.  
  60.      И еще важый момент
  61.      проверить этот счетчик Items Left - достаточно единожды в этом сценарии
  62.      тоже было в прошлых ревью и обсуждениях
  63.  
  64.      и такая проверка - не заменяет проверки состояния списка тасок
  65.      это - разные вещи, которые должны проверяться независимо друг от друга
  66.      и состояние списка тасок  - куда более важно
  67. */
  68. ******************************
  69. @Test
  70.     public void testTasksLifeCycle() {
  71.  
  72.         open("https://todomvc4tasj.herokuapp.com/");
  73.  
  74.         add("task1");
  75.         edit("task1", "task1 edited");
  76.         toggle("task1 edited");
  77.         activeTasksCount();
  78.         /*
  79.             тут нужна другая проверка
  80.             проверка списка тасок
  81.             assertTasks - подошла бы
  82.             перечитай прошлые ревью
  83.             насчет проверки - activeTasksCount(); - учти комментарии выше
  84.         */
  85.  
  86.         filterActive();
  87.         activeTasksCount();
  88.         /*
  89.             тут нужна проверка списка тасок
  90.             проверка assertNoTasks();
  91.         */
  92.         add("task2");
  93.         assertTasks("task2");
  94.         /*
  95.             без этой проверки можно обойтись
  96.             видимая таска - одна
  97.             и cancelEdit("task2"... - проверит операцию add("task2");
  98.         */
  99.         cancelEdit("task2", "task2 edited canceled");
  100.         assertTasks("task2");
  101.         /*
  102.             а вот тут - верно, проверка нужна
  103.             т к toggleAll(); - не проверит cancelEdit("task2"
  104.         */
  105.         toggleAll();
  106.         assertNoTasks();
  107.  
  108.         filterCompleted();
  109.         /*
  110.             тут - нужна проверка
  111.             ведь в этот момент в списке должны быть 2 видимые таски
  112.             а это значит - что операция toggle("task2") не проверит состояние всего списка
  113.         */
  114.         toggle("task2");
  115.         assertTasks("task1 edited");
  116.         clearCompleted();
  117.         /*
  118.             нужна проверка
  119.             следующая операция не является проверкой для предыдущей
  120.         */
  121.  
  122.         filterAll();
  123.         delete("task2");
  124.         assertNoTasks();
  125.     }
  126. /*
  127.     с покрытием и со сценарием - уже все ок
  128.  
  129.     с проверками - еще нужно доразобраться и доделать
  130. */
  131. ***************************************************
  132.  
  133.     add
  134.     startEdit
  135.     edit
  136.     assertTasks
  137.     assertNoTasks
  138.     toggle
  139.     filterActive
  140.     toggleAll
  141.     cancelEdit
  142.     activeTasksCount
  143.     filterCompleted
  144.     clearCompleted
  145.     filterAll
  146.     delete
  147.  
  148. /*
  149.     это - перечень вспомогательных методов в том порядке, который сейчас
  150.     писала тебе про это в прошлых ревью
  151.     в слеке - ничего не написал в защиту своего подхода, но и не прислушался к совету
  152.     почему?
  153.  
  154.     ниже - то, как можно было бы упорядочить
  155. */
  156.  
  157.     add
  158.  
  159.     startEdit
  160.     edit
  161.     cancelEdit
  162.  
  163.     delete
  164. /*
  165.     сначала - CRUD-операции
  166.     связанные друг с другом методы - расположены рядом
  167. */
  168.     toggle
  169.     toggleAll
  170.  
  171.     clearCompleted
  172. /*
  173.     дальше - остальные операции
  174.     аналогично - однотипные операции расположены рядом
  175. */
  176.  
  177.     filterAll
  178.     filterActive
  179.     filterCompleted
  180. /*
  181.     далее - операции переходов по фильтрам
  182.     рядом и в порядке следования фильтров
  183. */
  184.  
  185.     assertTasks
  186.     assertNoTasks
  187.     activeTasksCount
  188. /*
  189.     проверки
  190.     тоже - рядом
  191. */
  192.  
  193. /*
  194.     конечно, это не единственный способ для упорядочивания
  195.     конечно, технически это не имеет значения - ведь с любым порядком методов код будет работать
  196.     вот только его понятность, наглядность - от порядка методов - зависит
  197.  
  198.     тоже - смотри прошлые ревью про это
  199.     или обсуждай в слеке
  200. */
  201. **************************************
Advertisement
Add Comment
Please, Sign In to add comment