julia_v_iluhina

Untitled

Nov 9th, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.49 KB | None | 0 0
  1. public class TodoMVCTest {
  2.  
  3.     @Test
  4.     public void testTasksLifeCycle() {
  5.  
  6.         open("https://todomvc4tasj.herokuapp.com/");
  7.  
  8.         add("task1", "task2");
  9.         /*
  10.             мы сегодня это в слеке обсуждали
  11.             http://joxi.ru/Q2KpJYOs9n1nLA
  12.  
  13.             теперь у нас в списке - 2 таски
  14.             и мы никак не проверим состояние списка тасок - через неявную проверку
  15.  
  16.             edit("task1"... - проверит лишь одну таску
  17.             а их у нас 2, и проверить мы должны 2
  18.  
  19.             вот так - добавив 2 таски - ты лишил себя возможности использовать неявные проверки
  20.         */
  21.         edit("task1", "task1 edited");
  22.         assertTasksAre("task1 edited", "task2");
  23.         /*
  24.             в предыдущей версии - тут покрывал еще и complete
  25.             почему или зачем убрал?
  26.  
  27.             вижу - далее покрыл complete
  28.             тогда - тут покрой complete all
  29.             и то, и то - высокоприоритетные операции
  30.             и их надо покрыть в этом сценарии
  31.         */
  32.  
  33.         filterActive();
  34.         /*
  35.             из-за того, что убрал  complete - у нас состояние списка после перехода на другой фильтр -
  36.             не изменилось
  37.             и мы - не проверили достаточно точно операцию перехода на фильтр
  38.  
  39.             http://pastebin.com/DygrzcU0
  40.             строки 41-59
  41.  
  42.             начал повторять свои же ошибки
  43.  
  44.             нужна проверка - следующая операция не проверяет предыдущую операцию
  45.         */
  46.  
  47.         cancelEdit("task2", "task2 edit canceled");
  48.         assertTasksAre("task1 edited", "task2");
  49.         toggle("task1 edited");
  50.         /*
  51.             где проверка?
  52.             каждая операция должна быть проверена сразу (!!!)
  53.             если есть возможность - используй неявные проверки (это сделает наш тест более эффективным)
  54.             но пропускать проверки - нельзя
  55.             тест в таком случае не дает точного фидбека - что конкретно - работает  не так
  56.  
  57.             тоже уже обсуждали
  58.             http://pastebin.com/DygrzcU0, строки 88-103
  59.         */
  60.  
  61.  
  62.         filterCompleted();
  63.         assertTaskIsCompleted();
  64.         /*
  65.             пошла посмотрела на реализацию assertTaskIsCompleted()
  66.             ты проверяешь другое)
  67.             не то, о чем говорит имя метода
  68.             это ошибка
  69.             имя метода должно четко отражать - что метод делает
  70.             про него - ниже напишу
  71.  
  72.             тут нужно проверить состояние списка тасок
  73.  
  74.             просто воспользоваться assertTasksAre - не выйдет
  75.             надеюсь, ты увидел - что и на Active, и на Completed фильтре - все таски остаются в DOM
  76.             только видимыми будут лишь активные или закомпличеные - согласно фильтру
  77.             http://joxi.ru/l2ZNaR0F83gJv2
  78.  
  79.             если и на Active, и на Completed фильтре
  80.             проверять список тасок, отфильтрованных по кондишену visible
  81.             то все ок будет
  82.  
  83.             проверка будет по-прежнему полезной и точной
  84.  
  85.             я писала про то, что на этом фильтра разумно покрыть reopen
  86.             http://pastebin.com/DygrzcU0 строки 108 - 143
  87.             http://pastebin.com/BEwhwQ4h строки 89-96
  88.         */
  89.         clearCompleted();
  90.         $("#todo-count").shouldHave(exactText("1 item left"));
  91.         /*
  92.             да, эта проверка нужна - мы договаривались это покрыть единожды
  93.             про нее - отдельно поговорим
  94.  
  95.             такой проверки - недостаточно
  96.             нужна проверка состояния списка тасок
  97.         */
  98.  
  99.         filterAll();
  100.         delete("task2");
  101.         assertNoTasks();
  102.  
  103.     }
  104. ****************************************
  105.     http://pastebin.com/DygrzcU0 строки 108 - 143
  106. /*
  107.     аналогично показанному - анализируй покрытие
  108.     и если видишь проблемы - решай их
  109. */
  110. *************************************
  111. $("#todo-count").shouldHave(exactText("1 item left"));
  112. /*
  113.     мы сосредоточены на функциональных проверках, проверках логики
  114.     и нам в этом счетчике - нужно проверить лишь число закомпличеных тасок
  115.  
  116.     уточни элемент "#todo-count" - с нем есть внутренний элемент,
  117.     который содержит лишь цифру
  118.  
  119.     верно - нужно использовать кондишен exactText
  120.  
  121.     когда это выполнишь - реализуй для такой проверки метод  - чтоб вот так мог его вызывать - assertItemsLeft("1")
  122.  
  123.     а потом - доработаешь метод
  124.     ведь мы по сути - передаем число = количество активных тасок
  125.     доработай метод так - чтоб можно было вызывать метод - assertItemsLeft(1)
  126.  
  127. */
  128. ***********************************
  129.     private void assertTaskIsCompleted() {
  130.         $("#clear-completed").shouldBe(visible, enabled);
  131.     }
  132. /*
  133.     это - проверка  - что кнопка видима и доступна
  134.     но никак не проверка факта - что таски закомпличены
  135.  
  136.     то, что кнопка видима и доступна - мы и так проверим - вызвав clearCompleted()
  137.     ведь кликнуть можно только на видимом элементе
  138.     а что-то будет происходить при клике - если кнопка доступна
  139.  
  140.     т е - такая проверка просто не нужна
  141.  
  142.     всегда - очень внимательно относись к неймингу
  143.     имена любых сущностей - четко должны описывать их
  144.     никаких косвенных выводов и умозаключений при этом делать не нужно)
  145. */
  146. ***********************************
  147. /*
  148.     про порядок методов - ты меня не послушал
  149.     напрасно )
  150.        
  151.     http://pastebin.com/BEwhwQ4h, строки 110-160
  152. */
Advertisement
Add Comment
Please, Sign In to add comment