В SpecFlow, как я могу обменяться данными между шагами/функциями?

У меня есть 2 функции, которые используют общее, 'Когда' шаг, но имеет отличающийся, 'Затем' ступает в различные классы.

Как я получаю доступ, например, ActionResult от моего контроллера MVC призывают Когда шаг в моих двух Затем шаги?

35
задан Ralph Willgoss 17 August 2013 в 10:05
поделиться

2 ответа

В SpecFlow 1.3 есть три метода:

  1. статические члены
  2. ScenarioContext
  3. ContextInjection

Комментарии:

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

  2. См. ответ от @Si Keep в этом потоке

  3. Если конструктору класса определения шага нужны аргументы, Specflow пытается ввести эти аргументы. Это можно использовать для вставки одного и того же контекста в несколько определений шагов.
    См. Пример здесь: https://github.com/techtalk/SpecFlow/wiki/Context-Injection

35
ответ дан 27 November 2019 в 06:40
поделиться

Используйте класс ScenarioContext, который представляет собой словарь, общий для всех шагов.

ScenarioContext.Current.Add("ActionResult", actionResult);
var actionResult = (ActionResult) ScenarioContext.Current["ActionResult"];
33
ответ дан 27 November 2019 в 06:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: