Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TodoMVCTest {
- @Test
- public void testTasksLifeCycle() {
- open("https://todomvc4tasj.herokuapp.com/");
- add("a", "b");
- assertTasks("a", "b");
- edit("a", "a edited");
- assertTasks("a edited", "b");
- assertItemsLeft(2);
- //complete
- toggle("b");
- assertVisibleTasks("a edited", "b");
- /*
- все хорошо с покрытыми операциями и проверками
- только вот неявные проверки через действие тебе использовать не удалось
- а все потому, что 2 таски сразу добавил
- реально было - добавить одну
- ее же отредактировать и закомплитить
- и сюда прийти с одной видимой таской
- а после перехода а active фильтр - в списке не было бы ни одной таски
- и уже тогда бы довавил вторую таску
- это бы тебе дало - возможность использовать неявные проверки через действие
- */
- filterActive();
- assertVisibleTasks("a edited");
- /*
- А почему мы тут никаких действий не покрываем?
- я писала про этот момент в прошлый раз
- https://www.refheap.com/119143, строки 139 - 147
- это важно и это надо поправить
- на каждом из фильтров должна быть покрыта часть тестируемых действий
- распредели действия равномернее
- Тут ты мог бы покрыть
- add (если бы раньше не торопился добавлять 2 таски сразу
- cancelEdit
- complete all
- как раз перед переходом на Completed фильтр - убедился бы - что список тасок пуст
- потом перешел - и убедился - что в списке таски отображаются
- а на Completed - покрыл бы reopen и clearCompleted();
- тогда вернувшись на All - ты бы достаточно точно покрыл этот переход на фильтр
- да и осталось бы - только покрыть удаление таски
- она как раз одна бы была
- */
- filterCompleted();
- assertVisibleTasks("b");
- cancelEdit("b", "b cancel edit");
- assertVisibleTasks("b");
- //reopen
- toggle("b");
- assertVisibleTasksEmpty();
- filterAll();
- assertTasks("a edited", "b");
- delete("a edited");
- assertTasks("b");
- add("a");
- /*
- читай выше - как оптимизировать сценарий
- оптимизируй его
- тут можно обойтись без создания тасок вполне
- это уже на будущее
- даже если ты ранее удалил таску а
- не добавляй новую с таким же именем
- это усложняет код
- ты смотришь на код и уже думаешь - это какая а - та которая добавлена тогда-то или тогда-то
- или вообще такой вопрос себе не задаешь и думаешь, что это та, первая добавленная таска а
- короче - или долго думать, или заблуждаться
- из-за такой мелочи
- лучше просто использовать для разных тестовых данных - разные значения
- и с такой проблемой не столкнешься
- */
- assertTasks("b","a");
- //complete all
- toggleAll();
- clearCompleted();
- assertTasksEmpty();
- }
- private SelenideElement startEditing(String oldText, String newText) {
- tasks.findBy(exactText(oldText)).doubleClick();
- return tasks.find(cssClass("editing")).find(".edit").setValue(newText);
- }
- /*
- настаиваю на именах параметров oldTaskText & newTaskText
- у тебя получается, что для текста таски ты применяешь 2 термина - Text и TaskText
- это не однозначность
- не надо допускать неоднозначностей
- одно понятие обозначай одним именем
- это позволит писать понятный и однозначный код
- в других методах тоже поправь
- */
- *****************
- private void filterAll() {
- $$("a").findBy(exactText("All")).click();
- }
- /*
- Тут можно применить $(By.linkText(...))
- в данном случае вариант $$("a").findBy(exactText("All")) - не дает никаких преимуществ
- эта точность - не помогает
- да и точным селектор "a" - не назовешь
- */
Advertisement
Add Comment
Please, Sign In to add comment