Первоначально я предполагал, что файл шага связан с конкретным файлом объектов. Как только я понял, что это неправда, это помогло мне улучшить весь мой код SpecFlow и файлы функций. Язык моих файлов функций теперь меньше зависит от контекста, что привело к более повторяющимся определениям шагов и меньшему дублированию кода. Теперь я упорядочиваю свои файлы шагов по общим сходствам, а не по тому, для чего они предназначены. Насколько я знаю, нет способа связать шаг с определенной функцией, но я не эксперт SpecFlow, поэтому не верьте мне на слово.
Если вы все еще хотите связать свои файлы шагов с определенным файлом функций, просто дайте им похожие имена. Нет необходимости заставлять его работать только для этой функции, даже если пошаговый код имеет смысл только для этой функции. Это потому, что даже если вам удастся создать дублирующий шаг для другой функции, он обнаружит это как неоднозначное совпадение. Поведение для неоднозначных совпадений можно указать в файле App.config. Увидеть
http://cloud.github.com/downloads/techtalk/SpecFlow/SpecFlow%20Guide.pdf
для получения более подробной информации о файле App.config. По умолчанию неоднозначные совпадения обнаруживаются и сообщаются как ошибки.
[править]:
На самом деле есть проблема с работой таким образом (имея в виду только файлы шагов, связанные с файлами объектов). Проблема возникает, когда вы добавляете или изменяете файл .feature и используете ту же формулировку, которую вы использовали ранее, и вы забываете добавить шаг для нее, но вы этого не замечаете, потому что вы уже создали шаг для этой формулировки однажды и это было написано с учетом контекста. Также я больше не убежден в полезности не связывать файлы шагов с файлами функций. Я не думаю, что большинство клиентов будет очень хорошо писать спецификацию независимо от контекста. Мы обычно так не пишем, не говорим и не думаем.