Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class PreconditionHelpers {
- @Step
- public static void givenAtAll(TaskType taskType, String... taskTexts){
- ....
- public enum TaskType{
- ....
- }
- /*
- у тебя - уже пристойный PreconditionHelpers
- с очень хорошим неизбыточным кодом
- мы хотим бОльшей универсальности
- и хотим задавать набор тасок - для каждой из них задавая как текст, так и ее статус
- для этого - нам нужно оперировать новым классом, описывающим таску Task
- поскольку - этот новый класс - как и enum TaskType
- нам нужен только и только для описания гивен-методов
- то и этот класс реализуем в PreconditionHelpers
- получим
- */
- public class PreconditionHelpers {
- @Step
- public static void givenAtAll(TaskType taskType, String... taskTexts){
- ....
- public enum TaskType{
- ....
- public class Task {
- ....
- }
- }
- **************************************
- /*
- что за класс Task и с чем его едят
- как это будет снаружи
- нам хочется вызвать гивен-метод вот так
- given( new Task(TaskType.ACTIVE, "a"), new Task(TaskType.COMPLETED, "b"));
- или - если заюзать import static для TaskType.ACTIVE и TaskType.COMPLETED
- given( new Task(ACTIVE, "a"), new Task(COMPLETED, "b"));
- чтоб так его вызвать - нам нужен вот такой метод
- given(Task... tasks)
- цель - получить такой гивен
- который позволит задать сколь угодно разный набор тасок
- мы уже не будем ограничены единственным типом таски на все таски
- уже - глядя на вызовы - new Task(TaskType.ACTIVE, "a")
- понятно - что у конструктора этого класса - 2 параметра = тип таски и ее текст
- а раз 2 параметра - значит нам нужно 2 свойства у таски
- */
- public class Task {
- TaskType taskType;
- String taskText;
- public Task(TaskType taskType, String taskText) {
- this.taskType = taskType;
- this.taskText = taskText;
- }
- }
- /*
- минимально - этого достаточно
- в given(Task... tasks)
- ты можешь у таски получить ее свойства
- task.taskType или task.taskText
- за счет того что гивен-метод и класс - реализованы в рамках одного класса
- до свойств объекта Task доступиться сможешь из гивен-метода
- https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
- а можно сделать аккуратнее)
- реализовать toString в классе Task
- */
- public class Task {
- private TaskType taskType;
- private String taskText;
- public Task(TaskType taskType, String taskText) {
- this.taskType = taskType;
- this.taskText = taskText;
- }
- @Override
- public String toString() {
- return "{" + taskType + ",\"title\":\"" + taskText + "\"}"
- }
- }
- /*
- и тогда цикл в гивен-методе - вообще упростится
- for(Task task:tasks) {
- jsContent.add(task.toString());
- }
- собственно - все )
- думаю, ты искал какие-то более замудреные решения
- вот и
- сделай это
- и вернись к предыдущему ревью
- дальше - дело техники
- */
Advertisement
Add Comment
Please, Sign In to add comment