Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TodoMVCTest {
- @Test
- public void testCreateTask(){
- /*
- мы в этом тесте - проверяем не только как работает добавление таски
- потому - надо имя тест-метода изменить
- если мы перечислим все покрытые в тесте операции - получится слишком длинно
- в таких случаях можно для имени метода использовать выражения
- LifeCycle, CommonFlow и т п
- также надо уточнить - чей это флоу
- например - testTasksLifeCycle - будет ок
- */
- open("https://todomvc4tasj.herokuapp.com");
- $("#new-todo").setValue("do something").pressEnter();
- $("#new-todo").setValue("do something else").pressEnter();
- $("#new-todo").setValue("do something else again").pressEnter();
- $("#new-todo").setValue("do something else once more").pressEnter();
- /*
- в качестве текстов тасок можно использовать что-нибудь попроще
- например
- task1, task2, ...
- t1, t2, ...
- a, b,...
- тест станет гораздо проще воспринимать
- поскольку на этом уровне тестирования нас интересует именно функциональное тестирование
- то можно не заморачиваться с правдоподобными текстами
- это не ухудшит качество теста
- */
- $$("#todo-list li").shouldHave(size(4));
- $$("#todo-list li").shouldHave(exactTexts("do something", "do something else", "do something else again", "do something else once more"));
- /*
- проверка кондишена exactTexts - ваполняется следующим образом
- проверяются количество, порядок и тексты элементов
- если количество элементов коллекии не совпадает с количеством переданных текстов,
- то проверка не прошла
- иначе - продолжаем проверять
- сверяем текст элемента коллекции с соответствующим переданным текстом
- (нулевой - с нулевым, первый - с первым и т д)
- проверка прошла - если тексты всех элементов соответствуют переданным текстам
- так что - при такой проверке - проверять еще и size - излишне)
- */
- $("#todo-list li[data-index='1']").hover();
- $("#todo-list li[data-index='1'] .destroy").click();
- $$("#todo-list li").shouldHave(size(3));
- /*
- не самый лучший способ найти нн-ый элемент - использование атрибута data-index
- попробуй сначала добавить 3 таски, а затем удалить вторую
- получишь - что data-index не будет отражать порядковый номер элемента
- хотя, конечно, ты можешь возразить - что мы сами контролируем сценарий
- и соответственно - data-index элементов - тоже
- в рамках challenge - попробуй переписать, используй возможности синтаксиса css selector-ов
- http://www.w3schools.com/cssref/css_selectors.asp
- вот тут ты найдешь варианты - как обратиться к такому-то элементу списка
- (не используя для этого атрибуты типа data-index)
- конечно, этот код мы еще раз переделаем в итоге
- т к на самом деле - разумнее обращаться к таске по ее тексту
- (пока это отложи, ты сможешь это улучшить после просмотра следующего видео,
- к нему мы даем доступ - когда текущую версию закончим,
- а сейчас важнее разобраться с css selector-ами)
- насчет проверки shouldHave(size(3)) - ее недостаточно
- возможно - осталось правильное количество тасок
- но не факт - что они такие как надо
- вариант проверки с кондишеном exactTexts даст гораздо более точную картину
- */
- $("#todo-list li[data-index='3'] .toggle").click();
- $("#todo-list li[data-index='3'] .destroy").click();
- /*
- согласно условию - после того - как будет закомпличена таска - нужно ее
- удалить используя clear completed
- и результаты этих действий - тоже нужно проверить)
- вообще - нужно сразу проверять выполненные действия
- иногда можно себе позволить отложить проверку
- на один или несколько шагов
- только надо понимать - почему мы это можем себе позволить
- а в общем случае - каждое действие должно быть проверено сразу
- вот, например, выше - мы могли проверку использовать уже после добавления 4-ой таски
- т к до этого - делали однородные действия
- и даже если тест упадет на этой проверке - мы будем знать - с чем проблема у нас
- т е - отложив проверку - мы не потеряли в точности
- а тут мы
- закомплитили таску
- затем выполнили clear completed
- закомплитили все таски
- и снова выполнили clear completed
- и только потом проверили
- и например - такая проверка не прошла
- вопрос - какое действие к этому привело?
- такой тест нам не даст точного фидбека
- тут допустимо пропустить проверку после закомпличивания)
- но только на один шаг
- да, мы можем после закомпличивания отложить проверку на после clear completed
- исходя из того - что проверка текстов тасок на all фильтре нам не даст точности -
- были ли таски действительно закомпличены
- а уже проверка после clear completed - такой фидбек даст
- хотя... и тут, конечно, есть варианты
- например, если закомпличивание работает как удаление
- отложив проверку на после clear completed - мы пропустим такую ошибку)
- */
- $("#toggle-all").click();
- $("#clear-completed").click();
- $$("#todo-list li").shouldHave(size(0));
- /*
- эту проверку можно переписать как
- $$("#todo-list li").shouldBe(empty);
- технически - это одно и то же
- просто нагляднее
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment