MSpec, что я должен добавить в мои атрибуты [Subject()]?
Я использовал MSpec в течение некоторого времени, и мне действительно это нравится. Я обнаружил, что чтобы ReSharper распознал мои спецификации, мне нужно использовать SubjectAttribute
,
Мне интересно, что лучше всего положить в [Subject()]
атрибуты?
Если я делаю BDD, то я не знаю тестируемый тип, так [Subject(typeof(thingy))]
кажется преждевременным. Может быть добавлено позже, я полагаю, когда код написан.
Так что оставляет текстовую версию, [Subject("some text")]
, Но что лучше туда положить?
Что бы я ни делал, это, похоже, не влияет на вывод, который я получаю в ReSharper. Я полагаю, что в какой-то степени это зависит от личных предпочтений, но мне было интересно, было ли здесь какое-либо соглашение?
1 ответ
Вам не нужно подавать заявку SubjectAttribute
чтобы ReSharper распознавал контексты и спецификации, класс, содержащий It
поле будет достаточно. Однако, если вы хотите, чтобы ReSharper поддерживал пользовательские соглашения об именах для типов и полей MSpec (Because
и др.) вам нужно применить SubjectAttribute
:
Определить пользовательские соглашения об именах в ReSharper | Варианты | Языки / Общий раздел | Стиль именования | Расширенные настройки
При добавлении пользовательского правила именования прокрутите список вниз, чтобы увидеть объекты MSpec.
Включить аннотации MSpec в ReSharper | Варианты | Раздел "Проверка кода" / "Аннотации кода"
Аннотации +
SubjectAttribute
(даже без пользовательских правил именования) не позволяют ReSharper помечать поля MSpec как неиспользуемые. Либо отключите предупреждение 169 в настройках проекта.
Subject
служит метаданными, описывающими ваш контекст, например, вы можете использовать тестируемую систему (при написании модульного теста), выбранную вами строку или обе. Эта информация будет сообщена в HTML и в выходных данных ReSharper. Это не работает на данный момент, я подозреваю, что это ошибка в ReSharper Runner для 6.0.
Как и в случае со строками, вы можете поместить туда все, что захотите. Я бы порекомендовал использовать тему для группировки ваших спецификаций по функциям.
Тема: Войти
Контексты: при входе с действительными учетными данными, при входе с неверными учетными данными и т. Д.
В моем репозитории GitHub есть пример.