Да, к моменту запуска сценария в идеале все ваши классы будут реальными. Сценарий осуществляет поведение с точки зрения пользователя, поэтому система должна быть такой, какой ее увидит пользователь.
В первые дни BDD мы начинали с насмешек в сценариях. Я больше не беспокоюсь об этом, потому что много работы над тем, чтобы продолжать издеваться, пока вы спускаетесь по уровням. Вместо этого я буду иногда выполнять такие вещи, как жесткое кодирование данных или поведения, если это позволит мне быстрее получить обратную связь от заинтересованных сторон.
Мы по-прежнему держим насмешки в юнит-тестах.
Для таких вещей, как базы данных, вы можете использовать БД в памяти или любую другую информацию, которая поможет вам быстрее получить обратную связь. В какой-то момент вы, вероятно, должны запустить свои сценарии в системе, максимально приближенной к рабочей. Если это слишком медленно, вы можете сделать это за одну ночь, а не как часть обычного цикла сборки.
Что касается того, что вы «должны» сделать, то написание правильного кода гораздо сложнее, чем написание правильного кода. Я беспокоюсь об использовании моих сценариев, чтобы получить обратную связь от заинтересованных сторон и пользователей, прежде чем беспокоиться о том, насколько близка моя среда к производственной среде. Конечно, когда вы переходите к тому моменту, когда изменения внедряются каждые две недели, вам, вероятно, потребуется больше уверенности в том, что вы не вносите никаких ошибок.
Удачи!