julia_v_iluhina

Untitled

Oct 26th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.79 KB | None | 0 0
  1. public class TodoMVCTest {
  2.  
  3.     @Test
  4.     public void testCreateTask(){
  5.     /*
  6.         мы в этом тесте - проверяем не только как работает добавление таски
  7.         потому - надо имя тест-метода изменить
  8.  
  9.         если мы перечислим все покрытые в тесте операции - получится слишком длинно
  10.         в таких случаях можно для имени метода использовать выражения
  11.         LifeCycle, CommonFlow и т п
  12.         также надо уточнить - чей это флоу
  13.         например - testTasksLifeCycle - будет ок
  14.     */
  15.         open("https://todomvc4tasj.herokuapp.com");
  16.         $("#new-todo").setValue("do something").pressEnter();
  17.         $("#new-todo").setValue("do something else").pressEnter();
  18.         $("#new-todo").setValue("do something else again").pressEnter();
  19.         $("#new-todo").setValue("do something else once more").pressEnter();
  20.         /*
  21.             в качестве текстов тасок можно использовать что-нибудь попроще
  22.             например
  23.             task1, task2, ...
  24.             t1, t2, ...
  25.             a, b,...
  26.  
  27.             тест станет гораздо проще воспринимать
  28.             поскольку на этом уровне тестирования нас интересует именно функциональное тестирование
  29.             то можно не заморачиваться с правдоподобными текстами
  30.             это не ухудшит качество теста
  31.         */
  32.  
  33.         $$("#todo-list li").shouldHave(size(4));
  34.         $$("#todo-list li").shouldHave(exactTexts("do something", "do something else", "do something else again", "do something else once more"));
  35.         /*
  36.             проверка кондишена exactTexts  - ваполняется следующим образом
  37.                 проверяются количество, порядок и тексты элементов
  38.                 если количество элементов коллекии не совпадает с количеством переданных текстов,
  39.                 то проверка не прошла
  40.                 иначе - продолжаем проверять
  41.                 сверяем текст элемента коллекции с соответствующим переданным текстом
  42.                 (нулевой - с нулевым, первый - с первым и т д)
  43.                 проверка прошла - если тексты всех элементов соответствуют переданным текстам
  44.  
  45.                 так что - при такой проверке - проверять еще и size - излишне)
  46.         */
  47.  
  48.         $("#todo-list li[data-index='1']").hover();
  49.         $("#todo-list li[data-index='1'] .destroy").click();
  50.         $$("#todo-list li").shouldHave(size(3));
  51.         /*
  52.             не самый лучший способ найти нн-ый элемент - использование атрибута data-index
  53.             попробуй сначала добавить 3 таски, а затем удалить вторую
  54.             получишь - что data-index не будет отражать порядковый номер элемента
  55.  
  56.             хотя, конечно, ты можешь возразить - что мы сами контролируем сценарий
  57.             и соответственно - data-index элементов - тоже
  58.  
  59.             в рамках challenge - попробуй переписать, используй возможности синтаксиса css selector-ов
  60.             http://www.w3schools.com/cssref/css_selectors.asp
  61.             вот тут ты найдешь варианты - как обратиться к такому-то элементу списка
  62.             (не используя для этого атрибуты типа data-index)
  63.            
  64.             конечно, этот код мы еще раз переделаем в итоге
  65.             т к на самом деле - разумнее обращаться к таске по ее тексту
  66.             (пока это отложи, ты сможешь это улучшить после просмотра следующего видео,
  67.             к нему мы даем доступ - когда текущую версию закончим,
  68.             а сейчас важнее разобраться с css selector-ами)
  69.            
  70.             насчет проверки shouldHave(size(3)) - ее недостаточно
  71.             возможно - осталось правильное количество тасок
  72.             но не факт - что они такие как надо
  73.             вариант проверки с кондишеном exactTexts даст гораздо более точную картину
  74.         */
  75.  
  76.         $("#todo-list li[data-index='3'] .toggle").click();
  77.         $("#todo-list li[data-index='3'] .destroy").click();
  78.         /*
  79.             согласно условию - после того - как будет закомпличена таска - нужно ее
  80.             удалить используя clear completed
  81.            
  82.             и результаты этих действий - тоже нужно проверить)
  83.            
  84.             вообще - нужно сразу проверять выполненные действия
  85.             иногда можно себе позволить отложить проверку
  86.             на один или несколько шагов
  87.             только надо понимать - почему мы это можем себе позволить
  88.            
  89.             а в общем случае - каждое действие должно быть проверено сразу
  90.            
  91.             вот, например, выше - мы могли проверку использовать уже после добавления 4-ой таски
  92.             т к до этого - делали однородные действия
  93.             и даже если тест упадет на этой проверке - мы будем знать - с чем проблема у нас
  94.            
  95.             т е - отложив проверку - мы не потеряли в точности
  96.            
  97.             а тут мы
  98.                 закомплитили таску
  99.                 затем выполнили clear completed
  100.                 закомплитили все таски
  101.                 и снова выполнили clear completed
  102.                 и только потом проверили
  103.                
  104.              и например - такая проверка не прошла
  105.              вопрос - какое действие к этому привело?
  106.              такой тест нам не даст точного фидбека
  107.                
  108.              тут допустимо пропустить проверку после закомпличивания)
  109.              но только на один шаг
  110.                  да, мы можем после закомпличивания отложить проверку на после clear completed
  111.                  исходя из того - что проверка текстов тасок на all фильтре нам не даст точности -
  112.                  были ли таски действительно закомпличены
  113.                  а уже проверка после clear completed - такой фидбек даст
  114.              
  115.              хотя... и тут, конечно, есть варианты
  116.              например, если закомпличивание работает как удаление
  117.              отложив проверку на после clear completed - мы пропустим такую ошибку)
  118.         */
  119.  
  120.         $("#toggle-all").click();
  121.         $("#clear-completed").click();
  122.  
  123.         $$("#todo-list li").shouldHave(size(0));
  124.         /*
  125.             эту проверку можно переписать как
  126.             $$("#todo-list li").shouldBe(empty);
  127.            
  128.             технически - это одно и то же
  129.             просто нагляднее
  130.         */
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment