julia_v_iluhina

Untitled

Jan 7th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.01 KB | None | 0 0
  1. public class PreconditionHelpers {
  2.  
  3.     @Step
  4.     public static void givenAtAll(TaskType taskType, String... taskTexts){
  5.  
  6.       ....
  7.  
  8.     public enum TaskType{
  9.         ....
  10. }
  11.  
  12. /*
  13.     у тебя - уже пристойный PreconditionHelpers
  14.     с очень хорошим неизбыточным кодом
  15.  
  16.     мы хотим бОльшей универсальности
  17.     и хотим задавать набор тасок  - для каждой из них задавая как текст, так и ее статус
  18.  
  19.     для этого - нам нужно оперировать новым классом, описывающим таску Task
  20.     поскольку - этот новый класс - как и enum TaskType
  21.     нам нужен только и только для описания гивен-методов
  22.     то и этот класс реализуем в PreconditionHelpers
  23.  
  24.     получим
  25. */
  26.  
  27. public class PreconditionHelpers {
  28.  
  29.     @Step
  30.     public static void givenAtAll(TaskType taskType, String... taskTexts){
  31.  
  32.       ....
  33.  
  34.     public enum TaskType{
  35.         ....
  36.  
  37.     public class Task {
  38.         ....
  39.     }
  40. }
  41. **************************************
  42. /*
  43.     что за класс Task и с чем его едят
  44.  
  45.     как это будет снаружи
  46.  
  47.     нам хочется вызвать гивен-метод вот так
  48.         given( new Task(TaskType.ACTIVE, "a"), new Task(TaskType.COMPLETED, "b"));
  49.     или - если заюзать import static для TaskType.ACTIVE и TaskType.COMPLETED
  50.         given( new Task(ACTIVE, "a"), new Task(COMPLETED, "b"));
  51.  
  52.     чтоб так его вызвать - нам нужен вот такой метод
  53.     given(Task... tasks)
  54.  
  55.     цель - получить такой гивен
  56.     который позволит задать сколь угодно разный набор тасок
  57.     мы уже не будем ограничены единственным типом таски на все таски
  58.  
  59.     уже - глядя на вызовы - new Task(TaskType.ACTIVE, "a")
  60.     понятно - что у конструктора этого класса - 2 параметра = тип таски и ее текст
  61.     а раз 2 параметра - значит нам нужно 2 свойства у таски
  62. */
  63. public class Task {
  64.  
  65.     TaskType taskType;
  66.     String taskText;
  67.  
  68.     public Task(TaskType taskType, String taskText) {
  69.         this.taskType = taskType;
  70.         this.taskText = taskText;
  71.     }
  72.  
  73. }
  74. /*
  75.     минимально - этого достаточно
  76.     в given(Task... tasks)
  77.     ты можешь у таски получить ее свойства
  78.     task.taskType или task.taskText
  79.  
  80.     за счет того что гивен-метод и класс - реализованы в рамках одного класса
  81.     до свойств объекта Task доступиться сможешь из гивен-метода
  82.      https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
  83.  
  84.     а можно сделать аккуратнее)
  85.     реализовать toString в классе Task
  86.  
  87. */
  88. public class Task {
  89.  
  90.     private TaskType taskType;
  91.     private String taskText;
  92.  
  93.     public Task(TaskType taskType, String taskText) {
  94.         this.taskType = taskType;
  95.         this.taskText = taskText;
  96.     }
  97.  
  98.     @Override
  99.     public String toString() {
  100.         return "{" + taskType + ",\"title\":\"" + taskText + "\"}"
  101.     }
  102.  
  103. }
  104. /*
  105.     и тогда цикл в гивен-методе - вообще упростится
  106.    
  107.     for(Task task:tasks) {
  108.          jsContent.add(task.toString());
  109.     }
  110.    
  111.     собственно - все )
  112.     думаю, ты искал какие-то более замудреные решения
  113.     вот и
  114.    
  115.     сделай это
  116.     и вернись к предыдущему ревью
  117.     дальше - дело техники
  118. */
Advertisement
Add Comment
Please, Sign In to add comment