Таблица синтаксического анализа огурца в список объектов

В огурце я могу разобрать таблицу в список объектов, например:

public class Model {
    public String a;
    public String b;
    public String c;
}

Мой файл функций:

Scenario: Example
Given examples
|a     |b      |c    |
|lsj   |fjsldkf|fljs |
|fjsdfj|jfkskjl|fsjls|

Мой степ-класс:

@Given("$examples$")
public void examples(List<Model> list){}

Как я могу сделать то же самое, когда мой объект модели имеет ссылку на другие объекты, например:

public class SubModel{
    public String subA;
    public String subB;
}

public class Model {
    public String a;
    public String b;
    public String c;
    public SubModel subModel1;
    public SubModel subModel2;
}

В этом случае, как я могу написать таблицу, чтобы я мог проанализировать список моделей?


person Rogger Fernandes    schedule 01.03.2017    source источник
comment
Вам нужно будет вручную создать объекты модели. Cucumber не может обрабатывать создание классов, содержащих другие классы. Поскольку огурец использует отражение для заполнения полей, вместо вызова конструктора вы не сможете создавать свои объекты подмодели. Я бы создал класс, который принимает все необходимые данные в строковые поля и имеет метод, который возвращает правильно созданный объект модели.   -  person Grasshopper    schedule 01.03.2017


Ответы (1)


просто используйте, как показано ниже. Это будет работать

@Given("^examples$")
public void examples(DataTable sampleTable) {
    Map<String, String> sampleMap = new HashMap<>();
    DataTableRow header = sampleTable.getGherkinRows().get(0);
    DataTableRow value = sampleTable.getGherkinRows().get(1);
    for (String key : header.getCells()) {
        sampleMap.put(key, value.getCells().get(header.getCells().indexOf(key)));
    }

    client.setSampleDetails(sampleMap);
}
person Siva    schedule 10.10.2018