yashaka

Untitled

Feb 23rd, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.01 KB | None | 0 0
  1. ========================================================================================================================
  2. public class Emails {
  3. ...
  4.  
  5. @Step
  6. public Emails all() {
  7. return new Emails();
  8. }
  9.  
  10. ну.... лучше просто return this
  11.  
  12. и получается что этот ментод вообще лишний..
  13.  
  14.  
  15. >>>>>>>> с текущим подходом не лучше, потому что код
  16.  
  17. .emails()
  18. .readed()
  19. .shouldHaveSize(1)
  20. .all()
  21. .shouldHaveSize(5)
  22.  
  23. не будет работать как ожидалось)
  24.  
  25. >>>> чорт, да, не будет... и это ОЧЕНЬ запутывает...
  26.  
  27. ========================================================================================================================
  28. вот знаешь... я думаю плохой идеей было делать эти методы не статическими... пускай лучше бы они статическими были...
  29.  
  30. а то как то конфузно слегка получилось...
  31.  
  32. по сути
  33.  
  34. @Step
  35. public Emails unreaded() {
  36. return new Emails("zE");
  37. }
  38.  
  39. @Step
  40. public Emails readed() {
  41. return new Emails("yO");
  42. }
  43.  
  44. это альтернативные "конструкторы"
  45.  
  46. а конструктор - это "статическая штука" по своей природе...
  47.  
  48. твой стиль был бы удобен если бы мы как то использовали поточный обьект this
  49. если бы ты как то брал то что есть в this и дополнительно его например фильтровал... и потом бы создавал на основе этого класс emails...
  50.  
  51. а так... лучше просто статическими эти методы делать...
  52.  
  53.  
  54. >>>>>>>> если сделать статическими то в тест методах IDE не будет подсказывать что можно сделать, в случае если
  55. ты хочешь обратится к списку прочитанных\непрочитанных писем.... т.к. ты будешь стучатся к методу класса
  56. через его инстанс...
  57.  
  58. согласен с тобой по поводу того что с точки зрения программирования это не кошерно, делать нестатические
  59. конструкторы, но пока не придумал как сделать лучше...
  60.  
  61. филтровать нельзя, т.к. как ты из unreaded потом сделаешь all ? или readed?
  62. >>>> а вот в том то и дело что не нужно из unreaded делать all
  63.  
  64. ты хочешь прыгнуть выше головы...
  65.  
  66. мне вообще вот это:
  67.  
  68. .emails()
  69. .readed()
  70. .shouldHaveSize(1)
  71. .all()
  72. .shouldHaveSize(5)
  73.  
  74. кажется перебором... знаешь что обычно советуют в официальном деловом английском?
  75. строить простые предложения а не сложное
  76. вот и ты сделай так же
  77. незачем везде быть "fluent"
  78. закончи предложение кода для одного типа мейлов - и начни новое для другого типа
  79. мы же для того эти GIVEN WHEN THEN AND и придумали что бы разбивать длинные строчки на меньшие и в репорте что бы оно более читабельно было...
  80.  
  81. и как раз статические конструкторы тебе в этом помогут, и никаких с ними проблем описаных тобой выше не будет...
  82.  
  83. ========================================================================================================================
  84. еще... возможно стоило бы передавать бы в конструктор не кусок цсс - а целый локаторы в виде $$
  85. тогда бы эти статические конструкторы можно было бы запихнуть в InBox вообще...
  86.  
  87.  
  88. >>>>>>>> мне тоже не нравится что я оперирую строками, а не локаторами например, но у меня как то не получилось по
  89. нормальному сделать...
  90.  
  91. >>>> ну если что то конкретное не получается - ты пиши... показывай код который не выходит, буду помогать... вместе будем думать...
  92. ========================================================================================================================
  93.  
  94. public class Email {
  95. private final SelenideElement container;
  96.  
  97. public Email(SelenideElement container) {
  98. this.container = container;
  99. }
  100.  
  101. @Step
  102. public Email shouldHaveTopic(String topic) {
  103. container.find(".xY.a4W span").shouldHave(exactText(topic));
  104. return this;
  105. }
  106.  
  107. @Step
  108. public Email shouldHaveAuthor(String author) {
  109. container.find(".yX.xY .yW span").shouldHave(exactText(author));
  110. return this;
  111. }
  112. }
  113.  
  114. черт... обидно... ты тут сдублировал локаторы топика и автора...
  115. те что уже использовал тут:
  116.  
  117. public class Emails {
  118. ....
  119.  
  120. public Emails(String cssClass) {
  121. String css = "tr" + (cssClass.isEmpty() ? "" : "." + cssClass);
  122.  
  123. mailsContainers = container.findAll(String.format("tr.%s", css));
  124. authors = container.findAll(String.format("%s .yX .yW>span", css));
  125. topics = container.findAll(String.format("%s .y6 span[id*=':']", css));
  126. ...
  127. }
  128.  
  129. подумай как решить эту проблему...
  130.  
  131.  
  132. >>>>>>>> подумал, что можно удалить этот класс и решить все проблемы :)
  133. жаль, что столько проблем из за того, что у By нет аппендера, чтоб можно было
  134. несколько By склеить в один, а достать их оттуда тоже проблемно.... не хочется писать
  135. парсер тустринга.
  136.  
  137. >>> не нужно никаких парсеров
  138. ну вот и удали этот класс... виджеты - это круто - но не всегда их получается реализовать красиво... нужно держать баланс...
  139. я тебе скинул там переписку с солнцевым... если мы реализуем в селениде эту штуку - тогда все станет проще в твоем коде...
  140.  
  141. и я кстати хотел предложить тебе реализовать это - законтрибьютишь как раз в селениде, поднимешь свою карму, да и хорошый бонус к резюме...
  142.  
  143. вот только ты наверное сможешь это сделать, уже после того как вторую половину курса пройдешь...
Advertisement
Add Comment
Please, Sign In to add comment