Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class todoMVCTest {
- /*
- имя класса - должно быть с большой буквы
- https://google.github.io/styleguide/javaguide.html#s5.2.2-class-names
- */
- @Test
- public void createTask() {
- /*
- таки не послушался совета из
- https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
- это - е2е сценарий
- тут мы тестируем несколько действий
- для таких случаев можно применять более общие названия
- например
- tasksLifeCycle, tasksCommonFlow
- or
- testTasksLifeCycle, testTasksCommonFlow
- почитай раздел в faq)
- */
- open("https://todomvc4tasj.herokuapp.com/");
- CommonActions tasks = new CommonActions();
- //- Tasks #1-4 from test scenario
- tasks.add("#new-todo", "t1");
- tasks.add("#new-todo", "t2");
- tasks.add("#new-todo", "t3");
- tasks.add("#new-todo", "t4");
- /*
- для чего у метода add первый параметр?
- неужели мы можем использовать другой селектор для добавления таски? )
- используй комментарии только тогда - когда они действительно необходимы
- //- Tasks #1-4 from test scenario - ничего нового нам не говорит
- убирай)
- касается и других подобных комментариев
- */
- $$("#todo-list li").shouldHave(exactTexts("t1", "t2", "t3", "t4")).shouldHaveSize(4);
- /*
- нам достаточно проверки shouldHave(exactTexts("t1", "t2", "t3", "t4"))
- как осуществяется проверка по кондишену exactTexts
- сверяется количество, порядок и тексты
- количество элементов коллекции должно быть равно количеству переданных текстов
- иначе - проверка не прошла
- и далее - по порядку сверяются текст элемента и переданный текст
- нулевой - с нулевым
- первый с первым
- и т д
- таким образом - уже не нужно проверять размер списка
- раз уже проверили exactTexts
- касается и последующих проверок
- */
- //- Task #5 from test scenario
- tasks.delete("t2", ".destroy");
- /*
- тот же вопрос)
- другой селектор, не ".destroy" - мы разве можем использовать для удаления?
- а раз нет - тогда зачем нам такой второй параметр у метода?
- */
- $$("#todo-list li").shouldHave(exactTexts("t1", "t3", "t4")).shouldHaveSize(3);
- //- Task #6 from test scenario
- tasks.switchCheckBox("#todo-list li", "t4", ".toggle");
- /*
- мы переключаем = туглим = toggle - им
- посмотри на перевод toggle
- если есть термины в приложении - используй их
- tasks.toggle - будет точее и лаконичнее
- вопрос - мы где-то кроме коллекции с селектором "#todo-list li" - можем это делать?
- нет
- мы можем это делать используя какой-то другой элемент, кроме ".toggle"?
- тоже нет)
- так зачем это выносить в параметры метода?
- */
- //- Task #7 from test scenario
- tasks.clickButton("#clear-completed");
- /*
- почему не tasks.clearCompleted()?
- так - будет действительно проще
- сравни
- tasks.clickButton("#clear-completed");
- и
- $("#clear-completed").click();
- уже в прошлый раз про подобное говорили)
- незачем реализовывать методы
- если не становится проще
- а вариант tasks.clearCompleted() -
- более простой вариант
- т к мы уже не оперируем селектором
- надо выполнить такое-то действие - так имя метода про это и говорит
- clearCompleted можно сделать с помощью какого-то другого элемента
- кроме элемента с селектором "#clear-completed"?
- нет
- значит - зачем параметр методу?
- почитай про KISS principle
- */
- $$("#todo-list li").shouldHave(exactTexts("t1", "t3")).shouldHaveSize(2);
- //- Task #8 from test scenario
- $("#toggle-all").click();
- //- Task #9 from test scenario
- tasks.clickButton("#clear-completed");
- $$("#todo-list li").shouldHaveSize(0);
- /*
- проверка правильная
- но можно чуть нагляднее
- $$("#todo-list li").shouldBe(empty);
- технически - также
- но - короче и нагляднее
- */
- }
- }
- *******************************************************
- сравни свой код с таким
- TodoMVCPage tasks = new TodoMVCPage();
- open("https://todomvc4tasj.herokuapp.com/");
- tasks.add("t1");
- tasks.add("t2");
- tasks.add("t3");
- tasks.add("t4");
- $$("#todo-list li").shouldHave(exactTexts("t1", "t2", "t3", "t4"));
- tasks.delete("t2");
- $$("#todo-list li").shouldHave(exactTexts("t1", "t3", "t4"));
- tasks.toggle("t4");
- tasks.clearCompleted();
- $$("#todo-list li").shouldHave(exactTexts("t1", "t3"));
- $("#toggle-all").click();
- tasks.clearCompleted();
- $$("#todo-list li").shouldBe(empty);
- или даже с таким (если это сложно - то останавливайся на предыдущем варианте)
- TodoMVCPage tasks = new TodoMVCPage();
- open("https://todomvc4tasj.herokuapp.com/");
- tasks.add("t1");
- tasks.add("t2");
- tasks.add("t3");
- tasks.add("t4");
- tasks.assertTexts("t1", "t2", "t3", "t4");
- tasks.delete("t2");
- tasks.assertTexts("t1", "t3", "t4");
- tasks.toggle("t4");
- tasks.clearCompleted();
- tasks.assertTexts("t1", "t3");
- tasks.toggleAll();
- tasks.clearCompleted();
- tasks.assertEmpty();
- /*
- обрати внимание на пропуски строк
- на имена методов
- на их параметры
- на то - нужны ли комментарии
- на имя класса для вспомогательных методов - писала тебе про это в прошлый раз
- согласись - написано - в общем-то то же что у тебя
- но читать - на порядок проще
- комментировать - нечего
- максимум - для toggle и toggleAll
- написать краткие комментарии - complete & complete all
- т к имя метода нам не рассказывает об эффекте - что мы получим
- конечно, тестовые данные мы передаем как параметры
- но - селекторы - можно уже внутри вспомогательных методов спрятать
- почему - надеюсь, пояснений выше хватило
- */
Advertisement
Add Comment
Please, Sign In to add comment