Передача огурца Entity с полем карты. Как отобразить переменные, отправленные из файла объектов - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь передать объект, который имеет только 1 поле, которое является картой>. У меня проблемы с выяснением, как заставить огурец передавать переменные из файла объектов в Entity.

Вот объект Entity:

public class Page {
    // change the List to represent a List of Questions when the class is implemented.
    private Map<Integer, List<String>> questions;

    public Map<Integer, List<String>> getQuestions() {
        return questions;
    }

    public void setQuestions(Map<Integer, List<String>> questions) {
        this.questions = questions;
    }
}

И файл функции:

Scenario: Create new Questionnaire
    Given the user has clicked the "New questionnaire" button
    When the user creates new questionnaire:
      | name |
      | [6A] |
    And the user completes the questionnaire design form:
      | title                 |
      | fitness questionnaire |
    And completes the questionnaire structure:
      | questionsPage | questions                                                                         |
      | 1             | {Q1 - NPS Question, Q2 - Fitness Driver Question, 3 - Feedback Request Question } |
      | 2             | {Q3 - Feedback Request Question}                                                  |
    Then questionnaire is created successfully

Определение шага:

@And("^completes the questionnaire structure:$")
    public void completesTheQuestionnaireStructure(List<Page> pages) throws Throwable {
        questionnaireCreator.createQuestionnaireStructure(pages.get(0));
    }

Я хочу установить ключ карты как int, который я передаю из сценария, а значение за ключом - конкретный список вопросов, в настоящее время он вызывает исключение: "cucumber.runtime.CucumberException: Duplicate field вопросы "

Кто-нибудь сталкивался с такой проблемой, как вы решили ее исправить?

1 Ответ

0 голосов
/ 28 июня 2018

Не уверен насчет смешения безмятежности и огурца. Вы можете попробовать следующее решение, если оно работает.

Также я предполагаю от github и maven, что эта версия все еще поддерживает только огурец 2, поэтому XStream будет работать.

Необходимо удалить заголовок из таблицы данных и изменить список вопросов. И дополняет структуру анкеты:

  | 1 | Q1 - NPS Question,Q2 - Fitness Driver Question,Q3 - Feedback Request Question |
  | 2 | Q3 - Feedback Request Question                                                |

Используйте это в пошаговом определении кода. Огурец сам по себе не сможет превратиться в список в качестве ключа на карте. Вы можете использовать новую карту для установки в объект Page.

@And("^completes the questionnaire structure:$")
    public void completesTheQuestionnaireStructure(Map<Integer, String> pages) throws Throwable {

        Map<Integer, List<String>> pageNew = new HashMap<>();
        pages.forEach((k, v) -> pageNew.put(k, Arrays.asList(v.split(","))));

        System.out.println(pageNew);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...