julia_v_iluhina

Untitled

Oct 18th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.92 KB | None | 0 0
  1. ElementsCollection tasks = $$("#todo-list > li");
  2.  
  3. /*
  4.     технически - верный селектор
  5.  
  6.     лучше в таких случаях убрать пробелы вокруг ">"
  7.     да, ты ничего не нарушаешь)
  8.     но проще и однозначнее - вот такой селектор "#todo-list>li"
  9.  
  10.     у пробела в css селекторах есть свое назначение
  11.     советую пробелы в css селекторах употреблять только в этом,
  12.     значащем смысле )
  13.  
  14.     http://www.w3schools.com/cssref/css_selectors.asp
  15. */
  16. ***************************
  17.     @Test
  18.     public void testTasksLifeCycle() {
  19.  
  20.         open("https://todomvc4tasj.herokuapp.com/");
  21.  
  22.         add("a");
  23.         startEdit("a", "a-edited").pressEnter();
  24.         assertItemsLeft(1);
  25.         //complete
  26.         toggle("a-edited");
  27.         /*
  28.             тут проверь состояние списка тасок - assertTasks
  29.             так проверим - что на all фильтре таски отображаются вне зависимости от статуса
  30.             и проверка - после перехода на Active фильтр
  31.                 допроверяет - что таки таска была закомпличена
  32.                 и точно проверяет переход на фильтр
  33.         */
  34.  
  35.  ******************************************
  36.  
  37.     private void assertTasks(String... taskTexts) {
  38.         tasks.shouldHave(exactTexts(taskTexts));
  39.     }
  40.  
  41.     private void assertVisibleTasks(String... taskTexts) {
  42.         tasks.filter(visible).shouldHave(exactTexts(taskTexts));
  43.     }
  44.  
  45.     private void assertNoTasks() {
  46.         tasks.filter(visible).shouldBe(empty);
  47.     }
  48. /*
  49.     немного прокомментирую видео
  50.     https://drive.google.com/file/d/0B8hgIBw8-V-AdGxxU1R3enl1RzQ/view?ts=567ab8d7
  51.    
  52.     мы можем быть максимально точными и держать 4 проверки
  53.     2 -
  54.         в списке = такси с такими-то текстами
  55.         в списке = пусто
  56.     и еще 2 -
  57.         в отфильтрованном по visible списке = таски с такими-то текстами
  58.         в отфильтрованном по visible списке = пусто
  59.        
  60.     И за точность будем платить  тем - что надо думать - когда какую проверку вызвать правильнее
  61.     и если это делать бездумно - то при небольших изменениях сценариев - могут тесты падать на проверках,
  62.     или второй вариант - не будем нормально пользоваться полученной точностью...
  63.  
  64.     мы можем исходить из того, что ошибку, когда невидимые таски копятся в списке -
  65.     мы тестим на более низком уровне,
  66.     и на UI уровне - нам не нужно до этого уточняться. Поэтому - мы будем держать всего 2 проверки
  67.           в отфильтрованном по visible списке = таски с такими-то текстами
  68.           в отфильтрованном по visible списке = пусто
  69.          
  70.     В таком случае - каждый раз понятно - какую проверку вызывать - получаем более KISS картину
  71.     правда, платим за это точностью)
  72.    
  73.     Но - возможно - если мы уже отдельно это в тестах покрыли -
  74.     что у нас не копятся невидимые таски - так мы и не платим ) И - тогда - все проще в написании тестов,
  75.     и в их сопровождении.
  76.    
  77.     Тогда - поскольку обе проверки реализованы одинаково и других нету - можно из имен проверок скрыть этот нюанс
  78.     и назвать их assertTasks и assertNoTasks (хотя в них работаем с отфильтрованным по visible списком тасок)
  79.    
  80.     Варианты промежуточные - когда у нас 3 проверки
  81.     причем когда мы в именах проверок не придерживаемся одной логики
  82.     (то рассказываем про фильтрацию по visible, то не рассказываем)
  83.     этот варианты не однозначны, вызывают вопросы )
  84.      
  85.     Определись с вариантом)
  86. */
Advertisement
Add Comment
Please, Sign In to add comment