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("task1", "task2");
- /*
- мы сегодня это в слеке обсуждали
- http://joxi.ru/Q2KpJYOs9n1nLA
- теперь у нас в списке - 2 таски
- и мы никак не проверим состояние списка тасок - через неявную проверку
- edit("task1"... - проверит лишь одну таску
- а их у нас 2, и проверить мы должны 2
- вот так - добавив 2 таски - ты лишил себя возможности использовать неявные проверки
- */
- edit("task1", "task1 edited");
- assertTasksAre("task1 edited", "task2");
- /*
- в предыдущей версии - тут покрывал еще и complete
- почему или зачем убрал?
- вижу - далее покрыл complete
- тогда - тут покрой complete all
- и то, и то - высокоприоритетные операции
- и их надо покрыть в этом сценарии
- */
- filterActive();
- /*
- из-за того, что убрал complete - у нас состояние списка после перехода на другой фильтр -
- не изменилось
- и мы - не проверили достаточно точно операцию перехода на фильтр
- http://pastebin.com/DygrzcU0
- строки 41-59
- начал повторять свои же ошибки
- нужна проверка - следующая операция не проверяет предыдущую операцию
- */
- cancelEdit("task2", "task2 edit canceled");
- assertTasksAre("task1 edited", "task2");
- toggle("task1 edited");
- /*
- где проверка?
- каждая операция должна быть проверена сразу (!!!)
- если есть возможность - используй неявные проверки (это сделает наш тест более эффективным)
- но пропускать проверки - нельзя
- тест в таком случае не дает точного фидбека - что конкретно - работает не так
- тоже уже обсуждали
- http://pastebin.com/DygrzcU0, строки 88-103
- */
- filterCompleted();
- assertTaskIsCompleted();
- /*
- пошла посмотрела на реализацию assertTaskIsCompleted()
- ты проверяешь другое)
- не то, о чем говорит имя метода
- это ошибка
- имя метода должно четко отражать - что метод делает
- про него - ниже напишу
- тут нужно проверить состояние списка тасок
- просто воспользоваться assertTasksAre - не выйдет
- надеюсь, ты увидел - что и на Active, и на Completed фильтре - все таски остаются в DOM
- только видимыми будут лишь активные или закомпличеные - согласно фильтру
- http://joxi.ru/l2ZNaR0F83gJv2
- если и на Active, и на Completed фильтре
- проверять список тасок, отфильтрованных по кондишену visible
- то все ок будет
- проверка будет по-прежнему полезной и точной
- я писала про то, что на этом фильтра разумно покрыть reopen
- http://pastebin.com/DygrzcU0 строки 108 - 143
- http://pastebin.com/BEwhwQ4h строки 89-96
- */
- clearCompleted();
- $("#todo-count").shouldHave(exactText("1 item left"));
- /*
- да, эта проверка нужна - мы договаривались это покрыть единожды
- про нее - отдельно поговорим
- такой проверки - недостаточно
- нужна проверка состояния списка тасок
- */
- filterAll();
- delete("task2");
- assertNoTasks();
- }
- ****************************************
- http://pastebin.com/DygrzcU0 строки 108 - 143
- /*
- аналогично показанному - анализируй покрытие
- и если видишь проблемы - решай их
- */
- *************************************
- $("#todo-count").shouldHave(exactText("1 item left"));
- /*
- мы сосредоточены на функциональных проверках, проверках логики
- и нам в этом счетчике - нужно проверить лишь число закомпличеных тасок
- уточни элемент "#todo-count" - с нем есть внутренний элемент,
- который содержит лишь цифру
- верно - нужно использовать кондишен exactText
- когда это выполнишь - реализуй для такой проверки метод - чтоб вот так мог его вызывать - assertItemsLeft("1")
- а потом - доработаешь метод
- ведь мы по сути - передаем число = количество активных тасок
- доработай метод так - чтоб можно было вызывать метод - assertItemsLeft(1)
- */
- ***********************************
- private void assertTaskIsCompleted() {
- $("#clear-completed").shouldBe(visible, enabled);
- }
- /*
- это - проверка - что кнопка видима и доступна
- но никак не проверка факта - что таски закомпличены
- то, что кнопка видима и доступна - мы и так проверим - вызвав clearCompleted()
- ведь кликнуть можно только на видимом элементе
- а что-то будет происходить при клике - если кнопка доступна
- т е - такая проверка просто не нужна
- всегда - очень внимательно относись к неймингу
- имена любых сущностей - четко должны описывать их
- никаких косвенных выводов и умозаключений при этом делать не нужно)
- */
- ***********************************
- /*
- про порядок методов - ты меня не послушал
- напрасно )
- http://pastebin.com/BEwhwQ4h, строки 110-160
- */
Advertisement
Add Comment
Please, Sign In to add comment