MSpec, что я должен добавить в мои атрибуты [Subject()]?

Я использовал MSpec в течение некоторого времени, и мне действительно это нравится. Я обнаружил, что чтобы ReSharper распознал мои спецификации, мне нужно использовать SubjectAttribute,

Мне интересно, что лучше всего положить в [Subject()] атрибуты?

Если я делаю BDD, то я не знаю тестируемый тип, так [Subject(typeof(thingy))] кажется преждевременным. Может быть добавлено позже, я полагаю, когда код написан.

Так что оставляет текстовую версию, [Subject("some text")], Но что лучше туда положить?

Что бы я ни делал, это, похоже, не влияет на вывод, который я получаю в ReSharper. Я полагаю, что в какой-то степени это зависит от личных предпочтений, но мне было интересно, было ли здесь какое-либо соглашение?

1 ответ

Решение

Вам не нужно подавать заявку SubjectAttribute чтобы ReSharper распознавал контексты и спецификации, класс, содержащий It поле будет достаточно. Однако, если вы хотите, чтобы ReSharper поддерживал пользовательские соглашения об именах для типов и полей MSpec (Because и др.) вам нужно применить SubjectAttribute:

  1. Определить пользовательские соглашения об именах в ReSharper | Варианты | Языки / Общий раздел | Стиль именования | Расширенные настройки

    При добавлении пользовательского правила именования прокрутите список вниз, чтобы увидеть объекты MSpec.

  2. Включить аннотации MSpec в ReSharper | Варианты | Раздел "Проверка кода" / "Аннотации кода"

    Аннотации + SubjectAttribute (даже без пользовательских правил именования) не позволяют ReSharper помечать поля MSpec как неиспользуемые. Либо отключите предупреждение 169 в настройках проекта.

Subject служит метаданными, описывающими ваш контекст, например, вы можете использовать тестируемую систему (при написании модульного теста), выбранную вами строку или обе. Эта информация будет сообщена в HTML и в выходных данных ReSharper. Это не работает на данный момент, я подозреваю, что это ошибка в ReSharper Runner для 6.0.

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

Тема: Войти

Контексты: при входе с действительными учетными данными, при входе с неверными учетными данными и т. Д.

В моем репозитории GitHub есть пример.

Другие вопросы по тегам