Шаблон проектирования для утверждений Cucumber, частично соответствующих сообщениям - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь написать среду тестирования компонентов для приложения.Это приложение может отправлять сообщения через JMS / Websockets (транспорт не важен).Для определения шагов BDD я использую cucumber.

После выполнения действия на сервер тестирования компонентов будет отправлено несколько событий для сопоставления с ожидаемым списком.

Iищу шаблон / подход к разработке, который даст мне гибкость при записи разных именованных полей в таблице данных для одного и того же типа сообщения, без того, чтобы код, стоящий за ними, разбухал по шаблону для каждого конкретного поля.

Например, приведено сообщение со следующим определением:

Order {
  String orderId;
  int size;
  int amount;
  String name;
}

Я хочу иметь возможность написать разные утверждения:

Then I should have received following orders:
|orderId|size|amount|
|order1 | 10 | 50   |
|order2 | 5  | 10   |
Then I should have received following orders:
|orderId|name |
|order1 |ted  |
|order2 |steve|

Несколько способов, которые я придумал длявыполняя этот тип проверки:

1) Проходить по полученным сообщениям, отфильтровывать все сообщения заказа.Затем для каждого именованного поля определите функцию поиска по данному заданному сообщению заказа, которое будет возвращать значение для этого поля.Проверьте равенство для всех полей в каждом полученном сообщении.

При таком подходе останется много кода котельной пластины, поскольку для каждого значения в сообщении необходимо определить конкретные функции поиска (в этих сообщениях может быть 100 полей)

2) Создать заказ POJO,Разобрать полученные сообщения в POJO заказа.Также проанализируйте поля, определенные в утверждении, в POJO.В методе equals сделайте что-то вроде «если поле установлено из утверждения, затем включите его в проверку на равенство, иначе исключите».

Это выглядит лучше, но могут возникнуть проблемы, когда сообщение имеет тип списка.Т.е. должен ли список быть нулевым или пустой список?Можем ли мы иметь списки игнорируемых значений с определенным размером?

Вокруг этого должны быть шаблоны документации / дизайна, но я не могу найти хороших примеров.Любые указатели в правильном направлении будут оценены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...