SpecFlow - внедрение контекста против контекста сценария - PullRequest
0 голосов
/ 29 июня 2018

Любой, кто использует SpecFlow, вероятно, столкнулся с внедрением контекста и контекстом сценария для хранения данных в разных классах привязки. (Подробнее см .: https://specflow.org/documentation/Sharing-Data-between-Bindings/)

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

Может ли кто-нибудь увидеть причину, по которой вы хотели бы использовать контекст сценария вместо внедрения контекста? Я не могу думать ни о чем, но, может быть, я что-то упустил?

1 Ответ

0 голосов
/ 09 июля 2018

О разнице: в дополнение к этому контексту инъекция обеспечивает лучшую безопасность статического типа. (Я написал пост о модели децентрализованной архитектуры, которую вы можете создать с помощью внедрения контекста: http://gasparnagy.com/2017/02/specflow-tips-baseclass-or-context-injection/)

Почему контекст сценария? Прежде всего, эта функция существовала до внедрения контекста и использовалась во многих учебных пособиях и т. Д. Так что она более известна.

Кроме того, контекст сценария является несколько более простой концепцией программирования. Вы просто получаете и устанавливаете некоторую глобальную переменную. Для внедрения контекста вы должны понимать конструкторы, поля экземпляров и локальные переменные. Я думаю, что это важные вещи, которые нужно выучить в любом случае, но может быть слишком много одновременно (без посторонней помощи).

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

...